作用域

46 阅读1分钟

作用域

作用域

全局作用域:可以全局使用的变量、类似windows、不被函数包裹的变量

函数作用域:只能在函数内部使用的变量

块级作用域(ES6新增):只能在{}花括号中访问的变量

自由变量:

一个变量当前作用域没有定义、但是被使用了、他会向上级作用域一层一层以此寻找、直到找到为止;(如果到全局作用域都没找到、则报错 xxx is not defined)

    <script>
        let a = 0;
        function fn1(){
            let a1 = 100;
            function fn2(){
                let a2 = 200;
                function fn3(){
                    let a3 = 300;
                    return a + a1 + a2 + a3
                    // a 属于全局作用域
                    // a\a1\a2 属于自由变量
                    // a3 属于块级作用域
                }
                fn3()
            }
            fn2()
        }
        fn1()
    </script>