javascript中的函数...帮助我连接点

时间:2016-11-10 20:32:12

标签: javascript function arguments

我在雄辩的javascript中看到了这个例子,并想知道这个函数是如何工作的。有人可以向我解释一下吗?

function multiplier (factor) {

   return function(number){

      return number * factor; 

       };
 }
 var twice = multiplier(2);
 console.log((twice(5)); 
   // 10

我能够遵循参数因子= 2 我混淆了两次(5)以及它如何成为参数编号。

4 个答案:

答案 0 :(得分:1)

这是JavaScript中“封闭”的一个例子。

话说:

var twice = multiplier(2)

与说法完全相同:

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

因此,两次成为对函数的引用,该函数将返回两倍于您发送到它的值。

乘数函数返回function(number){...},它对因子有“闭包”(在本例中为2)。

这就是为什么当你致电twice(5)时,你会得到10的结果。

您需要了解闭包:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

答案 1 :(得分:0)

也许这可以帮助您理解

function multiplier (factor) {

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

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

您应该阅读有关匿名功能和范围的更多信息,我在这里找到了您的示例文章http://www.2ality.com/2011/02/javascript-variable-scoping-and-its.html

答案 2 :(得分:0)

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

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

稍微说一点,乘数创造的函数可以将一个数乘以某个因子。例如

>>> resolve_url("http://example.com/dir/../../thing/.")
'http://example.com/thing/'

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

multiplier(2)

相同
var twice = multiplier(2);

答案 3 :(得分:0)

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

function inner(number){
return number * 2;

};

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

在我看来,这是Javascript(范围链)最令人困惑的方面之一,因为它与其他语言的工作方式不同。但是如果你管理了几个简单的例子(比如你在这里发布的那个),从那时起就应该很容易阅读类似的代码。