在下面的简单 2 层柯里化(Currying)示例中,单词“dog”被传递到 y 参数中。
"use strict";
function layer2(x) {
return function(y) {
return console.log(x, y);
}
}
var layer1 = layer2('cat');
layer1('dog');
我知道它是这样工作的,并且我可以可靠地重现它。但是我无法理解其工作原理。如果我制作了一个 100 层的示例,第 1 层将是最里面的函数,并且图案将从该点向外工作。是什么基 native 制导致了这种情况?非常感谢您的任何意见!
最佳答案
简而言之,词法作用域使这成为可能。请参阅,示例中的 layer2
函数返回另一个函数,该函数在其作用域中具有两个变量:
y - its own argument
x - parameter passed into `layer2` function
这里的关键点是,一旦存储了返回的函数,x
值就被设置并且永远不会改变。同样,就您的示例而言,存储在 layer1
变量中的函数 - layer2('cat')
的结果 - 将 x
名称绑定(bind)到 ' cat' 字符串值。
关于javascript - 在柯里化(Currying)中,为什么外部的启动函数看起来是最内部的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47936053/