作用域

81 阅读1分钟

作用域

  • 作用域 

    •      1. 变量使用使用区间的, 变量不是说声明之后在哪里都可以用, 他有一个使用的范围, 我们把这个范围叫做 作用域
    •  作用域分为两种
    •      1. 全局作用域
    •              JS 给我们提供了一个叫做 window 的全局作用域, 可以理解为 整个 script 标签内的作用域, 就是全局作用域
    •              全局变量都会挂载到 window 对象上
    •      2. 局部作用域
    •              在 JS 中, 有 且只有 函数能够创建 局部作用域(函数作用域), 局部作用域开始和结束位置, 就是函数代码段的开始和结束位置
    •              在 局部作用域(函数作用域)内 声明的变量叫做局部变量
    •              局部变量 不会挂载到 window 对象
    •              function唯一划分作用域

作用域链条

  • 作用域链
    • 在查找过程中逐级向上形成的链条叫做作用域链(定义非实际存在)
    • //作用域链只会向上查找
    • 变量访问
    • 变量就近访问变量原则,没有向上级作用域查找
    • 如果找不到继续向上,
    • 如果实在找不到 就报错
    • 变量赋值
    • 变量就近访问变量原则,没有向上级作用域查找
    • 如果找不到继续向上,
    • 如果实在找不到 就将变量定义在全局作用域内
//就近访问原则, function唯一划分作用域
        var num = 1
        function fn() {
            // var num = 200
            function fn1() {
                // var num = 300
                console.log(num)
            }
            fn1()
       }
        fn()