作用域链概念介绍

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    
    <script type="text/javascript">
        // 作用域链
        // 每一个函数都有一个作用域, 如果一个函数内部又嵌套链另外一个函数,
        // 嵌套的函数也会又一个作用域,这样,嵌套函数就能访问到外部函数中的变量,
        // 以及全局作用域中的变量,此时就形成了一条作用域链
        // (包括:自身的作用域, 以及外部函数的作用域, 以及全局作用域)

        // 全局作用域: script标签包裹的内容就是一个作用域
        var abc = 123;

        // fn 中能访问到的变量由那些:
        // 1 自身定义的变量
        // 2 上一级作用域中的变量(全局作用域)

        // foo 中能访问到的变量由那些:
        // 1 自身定义的变量
        // 2 函数fn中的变量
        // 3 全局作用域中的变量
        function fn() {
            var a = 456;

            function foo() {
                var num = 123;

                // f的作用域链: f作用域 -> foo作用域 -> fn作用域 -> 全局作用域
                function f() {}
            }
            foo();
            // console.log(num);
        }
    </script>
</body>
</html>
原文地址:https://www.cnblogs.com/lsy0403/p/5930441.html