每天 10 分钟,学习 JavaScript —— (十六)作用域与作用域链

129 阅读1分钟

作用域

  • 概念
    • 一个代码段所在的区域,静态的,在编写代码时就确定了
  • 分类
    • 全局作用域
    • 函数作用域
    • 块作用域(ES6)
  • 作用
    • 隔离变量,不同作用域下同名变量不会冲突 image.png

作用域链

  • 理解
    • 多个上下级关系的作用域形成的链,它的方向是从下向上的(从内到外)
    • 查找变量时就是沿着作用域链来查找的
  • 查找一个变量的查找规则
    • 在当前作用域下的执行上下文中查找对应的属性,如果有直接返回,否则进入上一级
    • 在上一级作用域下的执行上下文中查找对应的属性,如果有直接返回,否则进入上一级
    • 再依次执行相同操作,直至查找到全局作用域,如果有直接返回,否则就抛出找不到的异常
    var a = 10
    function fn1() {
      var b = 20
      function fn2() {
        var c = 30
        console.log('a:' + a) // a:10
        console.log('b:' + b) // b:20
        console.log('c:' + c) // c:30
      }
      fn2()
    }
    fn1()