不理解闭包函数是如何工作的

Don't understand how Closure Functions are working?

本文关键字:工作 何工作 闭包 函数 不理解      更新时间:2023-09-26

我正在阅读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

外部函数(wrapValue)返回一个函数。返回的函数被赋值给变量wrap1wrap2。这就是为什么可以从变量中调用返回的函数。

看下面的例子可能更容易理解。

你可以像刚才那样创建一个函数:

function foo() { return "foo"; }

或者你可以将一个函数赋值给一个变量:

var foo = function() { return "foo"; }

第二个例子基本上与闭包完全相同——它将一个函数赋值给一个变量。

在任何情况下,都可以用

调用函数
foo();