这个问题已经在这里有了答案:




9年前关闭。






我是JavaScript的新手,但是我对闭包的工作方式感到困惑。有人可以用外行的术语解释他们是什么或为什么有用吗?

最佳答案

闭包类似于定义函数时的上下文。每当定义函数时,都会存储上下文,即使函数的“正常”生命周期结束,如果在函数执行过程中保留对定义的元素的引用,它仍然可以访问上下文的元素(闭包),这实际上是函数定义中的范围。对不起,我的英语不好,但是这个例子可能会让您理解:

function test() {
  var a = "hello world";
  var checkValue = function() { alert(a); };
  checkValue();
  a = "hi again";
  return checkValue;
}

var pointerToCheckValue = test();  //it will print "hello world" and a closure will be created with the context where the checkValue function was defined.
pointerToCheckValue(); //it will execute the function checkValue with the context (closure) used when it was defined, so it still has access to the "a" variable

希望能帮助到你 :-)

关于javascript - 被JavaScript中的闭包混淆,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8171959/

10-11 21:43