Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的函数。。。帮我把这些点连起来_Javascript_Function_Arguments - Fatal编程技术网

javascript中的函数。。。帮我把这些点连起来

javascript中的函数。。。帮我把这些点连起来,javascript,function,arguments,Javascript,Function,Arguments,我在有说服力的javascript中看到了这个例子,并想知道这个函数是如何工作的。有人能给我解释一下吗 function multiplier (factor) { return function(number){ return number * factor; }; } var twice = multiplier(2); console.log((twice(5)); // 10 我能够遵循参数factor=2。 我对两次(5)以及它如

我在有说服力的javascript中看到了这个例子,并想知道这个函数是如何工作的。有人能给我解释一下吗

function multiplier (factor) {

   return function(number){

      return number * factor; 

       };
 }
 var twice = multiplier(2);
 console.log((twice(5)); 
   // 10
我能够遵循参数factor=2。

我对两次(5)以及它如何成为参数数感到困惑。

也许这可以帮助您理解

function multiplier (factor) {

  function inner(number){
    return number * factor;
  };

  return inner;
}
var twice = multiplier(2);
console.log((twice(5)); 

您应该阅读更多关于匿名函数和作用域的内容,在这里我找到了一篇文章,其中包含您的示例

乘数是一个接受输入因子的函数

它返回一个函数。返回的函数接受一个数字作为输入,并返回乘以因子的数字

换一种说法,乘法器创建的函数可以将一个数字乘以某个因子。比如说

multiplier(2)
调用
乘数(2)
将返回一个函数,该函数接受一个数字作为输入,并返回该数字乘以2的结果

var twice = multiplier(2);

function twice(number){
  return number * 2;
}

这是JavaScript中的“闭包”示例

说:

var twice = multiplier(2)
这与说:

var twice = function(number){
  return number * 2; 
};
因此,tweeps成为对函数的引用,它将返回两倍于发送给它的值

乘法器函数返回
函数(number){…}
,该函数在因子上具有“闭包”(在本例中为2)

这就是为什么当你调用
两次(5)
时,结果是10


您需要阅读闭包:

最重要的事实是,乘法器返回一个函数(闭包),它是一个创建函数的函数。返回函数的工作方式与您自己定义的函数相同,参数由值替换

function inner(number){
return number * 2;
})

两次将以与内部相同的方式工作,但改用5。(在示例中,两次之前有一个额外的括号)


在我看来,这是Javascript(作用域链)最令人困惑的方面之一,因为它不同于其他语言的工作方式。但是,如果您能够理解几个简单的示例(如您在此处发布的示例),那么从那时起,阅读类似的代码应该很容易。

您调用了一个函数,该函数返回一个新的function@Endless我也看过了。我不相信它们的相似性足以让OP理解乘法器创建的东西叫做闭包,然后返回一个匿名函数。这里的聪明之处在于javascript捕获了factor变量。在你的例子中,两次等于匿名函数,因子设置为2。谢谢你的帮助。谢谢特雷弗。你的例子确实有助于澄清问题。我通读了文档以了解更多的背景信息。谢谢你的帮助。