javascript一个作用域案例分析

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    
    <script type="text/javascript">
        // 词法作用域:
        //         在js中只有函数能够形成一个作用域, 所以, 词法作用域也叫做函数作用域
        //         
        // 在js中, 每一个函数都形成了一个作用域,
        //         所以, 在函数内部声明的变量,在函数的外部是访问不到的

        // 分析作用域的面试题的时候, 一般:
        // 1 将所有的变量或者是函数,能提升的全部都提升
        // 2 再分析

        // 面试题 1:
        // function foo() {
        //     var num = 123;
        //     console.log(num);  // 123
        // }
        // foo();
        // console.log(num); // num is not defined

        // 2
        /*var scope = "global";
        function foo() {
            console.log(scope); // undefined
            var scope = "local";
            console.log(scope); // local
        }
        foo();*/

        // 提升完之后的结构:
        var scope;
        function foo() {
            var scope;
            
            console.log(scope); // undefined
            scope = "local";
            console.log(scope); // local
        }

        scope = "global";
        foo();
    </script>
</body>
</html>
原文地址:https://www.cnblogs.com/lsy0403/p/5930426.html