JavaScript - 作用域,作用域链(Scope chain)

参考

https://www.jianshu.com/p/3b5f0cb59344
https://jingyan.baidu.com/article/4f34706e18745be386b56d46.html

1. 作用域

在ES5之前JS没有块级作用域({}内部声明的变量只能够在{}内部访问到,在{}外部无法访问到其内部声明的变量),有函数作用域。

2. 作用域链

当我们在局部作用域中,访问一个变量时,系统首先会在当前作用域中寻找变量var的声明语句,如找到则直接使用。反之,则继续向上一级作用域中寻找var的声明语句,如找到则直接使用,反之,继续向上一级作用域中去寻找…直到全局作用域

例子,尝试注释掉每个f的num

    <script>


        var num = 10;

        function f1() {
            var num = 20;

            function f2() {
                var num = 30;

                function f3() {
                    var num = 50;
                    console.log(num);
                }

                f3();
            }

            f2();
        }

        f1();
    </script>


猜你喜欢

转载自www.cnblogs.com/allen2333/p/9147447.html