学科分类
目录
JavaScript网页编程

作用域链

当在一个函数内部声明另一个函数时,就会出现函数嵌套的效果。当函数嵌套时,内层函数只能在外层函数作用域内执行,在内层函数执行的过程中,若需要引入某个变量,首先会在当前作用域中寻找,若未找到,则继续向上一层级的作用域中寻找,直到全局作用域。我们称这种链式的查询关系为作用域链。

下面我们通过代码演示在函数嵌套中的作用域链效果。

 1  var num = 10;

 2  function fn() {     // 外部函数

 3   var num = 20;

 4   function fun() {   // 内部函数

 5    console.log(num);  // 输出结果:20

 6   }

 7   fun();

 8  }

 9  fn();

在上述代码中,fun()函数内访问了num变量,由于在fun()函数内部不存在num变量,所以向上级作用域中查找。fun()函数的上级作用域是在fn()函数,在该函数中找到了num变量,所以输出结果为20。假如在fn()函数中也没有num变量,则再往上查找,这时就到了全局作用域,此时num的值就是全局作用域下的10。

点击此处
隐藏目录