看到这个的时候我正在看书
function multiplier(factor) {
return number => number * factor;
}
- 我知道闭包是函数内的函数,可以访问父函数的局部变量,但返回的函数仍被视为闭包吗?
- 如果这被视为闭包,则意味着参数也被视为局部变量。这是真的?如果是这样,在所有编程语言中都是如此吗?我看到一些帖子说他们不完全一样。有什么区别?
最佳答案
虽然这是闭包的示例,但这也是柯里化(Currying)函数的示例。
是的,函数及其参数和局部变量被添加到调用堆栈中,这在(大多数?)编程语言中都是如此。我不知道有哪一种语言是不正确的,但是可以用其他方式编写,所以我相信有人已经做到了。我会说参数/参数和局部变量之间的主要区别在于函数可以控制局部变量,而参数则由调用它的任何东西控制。您可以在这里看到差异,但它们或多或少是相同的。
// You'll need to actually look in your dev tools to see the result
const test = test => test2 => test2;
console.log("Test:");
console.dir(test);
console.dir(test());
const best = function(best) {
return function(best2) {
return best2;
}
}
console.log("Best:");
console.dir(best);
console.dir(best());
// You'll need to actually look in your dev tools to see the result
关于javascript - Eloquent Javascript,局部变量是参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55604107/