调用JavaScript函数如何工作?

问题描述 投票:-1回答:3

我是一名学生,并且来自较低级的语言(Java),所以对此我感到非常困惑。

例如:

function sum (x){
let z = function (y) {return x + y };
return z;
}
sum(1)(2) // returns 3

sum(1)(2)如何工作?我认为sum(1)返回z,据此调用了z(2),但我对此不太了解。另外,为什么不给函数命名就只将z初始化为function (y)?从低级语言角度讲解JavaScript的任何技巧?我很难过。

javascript syntax
3个回答
4
投票

sum(1)(2)如何工作?

您正在调用sum(1),然后用(2)调用返回值。在这种情况下,返回值是一个函数,因此可以调用它。就像这样写:

function sum(x) {
  let z = function(y) {
    return x + y
  };
  return z;
}
let returnValue = sum(1);
console.log(returnValue);
console.log(returnValue(2));
如您所见,returnValue是一个函数,与预期的一样。此函数采用1个参数y,并使用第一个函数的创建范围中的x返回x + y

为什么要定义z为没有名称的函数?

[使用语法let z = something时,正在使用表达式定义something。就像您将定义let a = 1而不是let a = myVar 1(??)一样,函数也是如此。您无需为其命名,因为您可以将该函数称为z。知道了吗?

有关使用JavaScript的任何技巧

[如果您想学习JS,我真的建议您阅读You Don't Know Javascript。在我以为我知道JS之后,就读了它,并且发现了很多我不知道的东西。它还说明了js中的工作原理。

更多,还有很多可以教你训练的网站。只是谷歌它。

重要提示

java不是低级语言,而是高级语言。


2
投票

您是对的,sum(1)返回z,这只是分配了匿名函数的变量。]​​>

在JS中,可以通过两种方式定义函数,即函数声明或函数表达式。您可以在MDN中查找确切的定义here

您所拥有的是一个函数表达式,并且函数表达式可以命名或匿名。

[我也建议阅读更多有关JS中的函数如何维护其自身范围的信息,这是z如何引用参数x的原因。

我希望这能给您更多的见识!


0
投票

在JavaScript中,函数是对象(实际上,所有对象都是对象),因此可以使用变量引用它们,也可以从其他函数返回它们。因此,当您从函数中返回z时,它将返回一个匿名函数。

© www.soinside.com 2019 - 2024. All rights reserved.