javascript中的函数。。。帮我把这些点连起来
我在有说服力的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)以及它如
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。谢谢你的帮助。谢谢特雷弗。你的例子确实有助于澄清问题。我通读了文档以了解更多的背景信息。谢谢你的帮助。