0%

7、作用域与作用域链

作用域与作用域链

  • 理解:
    • 作用域: 一块代码区域, 在编码时就确定了, 不会再变化
    • 作用域链: 多个上下级关系的作用域形成的链, 方向是从下向上的(从内到外)
  • 分类:
    • 全局
    • 函数
    • js没有块作用域(在ES6之前)
  • 作用
    • 作用域: 隔离变量, 可以在不同作用域定义同名的变量不冲突
    • 作用域链: 查找变量
  • 区别作用域与执行上下文
    • 作用域: 每个函数都会创建自己的作用域,在函数定义时就已经确定了。而不是在函数调用时, 静态的, 编码时就确定了(不是在运行时), 一旦确定就不会变化了
    • 执行上下文: 动态的, 执行代码时动态创建, 当执行结束消失
    • 联系: 执行上下文(对象)是从属于所在的作用域

  • 面试题1
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var x = 10;
    function fn() {
    console.log(x);
    }
    function show(f) {
    var x = 20;
    f();
    }
    show(fn);
  • 面试题2
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var fn = function () {
    console.log(fn)
    }
    fn()
    var obj = {
    fn2: function () {
    console.log(fn2)
    //console.log(this.fn2)
    }
    }
    obj.fn2()