一尘不染

JavaScript范围链

javascript

我已经阅读过Java的作用域链,但对我来说却没有任何意义,有人可以告诉我什么是作用域链,以及作用域与图形或什至是白痴都能理解的方式。我用谷歌搜索,但没有找到可理解的东西:(


阅读 343

收藏
2020-05-01

共1个答案

一尘不染

要了解作用域链,您必须知道闭包是如何工作的。

当您嵌套函数时,会形成一个闭包,内部函数即使在其父函数已经执行后,也可以引用其外部封装函数中存在的变量。

JavaScript通过遍历范围链(从本地到全局)来解析特定上下文中的标识符。

考虑具有三个嵌套函数的此示例:

var currentScope = 0; // global scope
(function () {
  var currentScope = 1, one = 'scope1';
  alert(currentScope);
  (function () {
    var currentScope = 2, two = 'scope2';
    alert(currentScope);
    (function () {
      var currentScope = 3, three = 'scope3';
      alert(currentScope);
      alert(one + two + three); // climb up the scope chain to get one and two
    }());
  }());
}());
2020-05-01