javascript中作用域

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中作用域相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    
    <script type="text/javascript">
        // 什么叫作用域 ??
        // 从字面意思来理解: 起作用的那块区域
        // 作用域是限制什么的? 变量 还是 代码逻辑
        // 一般说的作用域, 就是指: 变量的作用域

        // 作用域主要由两种作用域:
        // 1 块级作用域 (JS不支持)
        // 2 词法作用域

        // 1 什么叫做块级作用域?
        //         常见的支持块级作用域的语言:
        //                 C 语言( C系,如:Java、Object-C/Swift、C# / C++)
        //         在支持块级作用域的语言里面, 一个代码块就能来限制变量的使用
        // if( true ) {
        //     var num = 123;
        // }
        // console.log(num);
        // for(var i = 0; i < 10; i++) {
        //     console.log(i);
        // }
        // console.log(i); 
        // 在支持块级作用域的语言中,在for循环的外部是访问不到i的值


        // 2 词法作用域
        // 一个变量的作用范围, 在代码写出来的那一刻就定下了, 不会根据代码的运行
        //         而受影响.
        // 换句话说: 变量的作用范围只与代码声明的位置有关, 而与运行时无关
        //              函数也是同样的道理, 只与函数声明的位置有关, 而与调用的位置无关
        // var num = 123;


        // 面试题
        var num = 123;
        function f1() {
            console.log(num); // 123??
        }

        function f2() {
            var num = 456;
            f1();
        }

        f2(); 

        // 
        /*var i;
        for(i = 0; i < 10; i++) {
            // console.log(i);
        }
        // 在js中能在for循环的外部来访问到 循环内部定义的变量
        console.log(i);  // ??? 10*/
    </script>
</body>
</html>

 

以上是关于javascript中作用域的主要内容,如果未能解决你的问题,请参考以下文章

JS 作用域及作用域链

JS 作用域及作用域链

JS---闭包

JavaScript ES6 的let和const

Javascript代码片段在drupal中不起作用

下面JavaScript代码如何理解?块级作用域如何理?