我正在阅读eloquentjavascript以学习javascript,但这个封闭的事情令我感到困惑。 warp1不是函数,但它看起来像函数,它看起来也像参数。闭包功能如何工作?我们可以使用它的原因是什么?
function wrapValue(n) {
var localVariable = n;
return function() { return localVariable; };
}
var wrap1 = wrapValue(1);
var wrap2 = wrapValue(2);
console.log(wrap1());
// → 1
console.log(wrap2());
// → 2
答案 0 :(得分:0)
外部函数(wrapValue
)返回一个函数。因此,返回的函数将分配给变量wrap1
和wrap2
。这就是你可以从变量中调用返回函数的原因。
当我们查看以下内容时,可能会更容易理解。
您可以像以前一样创建一个函数:
function foo() { return "foo"; }
或者您可以为变量分配函数:
var foo = function() { return "foo"; }
第二个示例基本上与闭包完全相同 - 它为变量赋值。
在所有情况下,您都可以使用
调用该函数foo();
通过变量或函数名称。