作用域和作用域链

94 阅读1分钟

定义

  • 作用域就是代码的执行环境,全局执行环境就是全局作用域,函数的执行环境就是私有作用域,它们都是栈内存
  • 作用域链是在函数定义的时候确定的
  • 内部环境可以通过作用域链访问所有外部环境,但外部环境不能访问内部环境的任何变量和函数
  • 当在内部函数中,需要访问一个变量的时候,首先会访问函数本身的变量对象,是否有这个变量,如果没有,那么会继续沿作用域链往上查找,直到全局作用域。

作用域链是在函数定义的时候确定的

var x=10;
function fn(){
    console.log(x);
}
function show() {
    var x=20;
    fn();
}
show();  //输出10
-----------------------
var x=10;
function show() {
    var x=20;
    function fn(){
        console.log(x);
    }
    fn();
}
show();  //输出20