zoukankan      html  css  js  c++  java
  • javascript中的变量作用域

    <script>
            // javascript变量的作用域
            // 声明环境: 块中、函数中、全局
            // 声明方式: 1)使用var 2)不使用var
            
            // 块中
            if (true){
                var block_var_a = "test";
                block_a = "test";
            }
            console.log("block_var_a="+block_var_a);    // block_var_a=test
            console.log("block_a="+block_a);    // block_a=test
    
            // 函数中
            var fun1 = function () {
                var fun_var_a = "test";
                fun_a = "test";
            }
            fun1();
            //console.log("fun_var_a="+fun_var_a);    // Uncaught ReferenceError: fun_var_a is not defined
            console.log("fun_a="+fun_a);    // fun_a=test
    
            // 全局
            var global_var_a = "test";
            global_a = "test";
            if (true){
                console.log("global_var_a="+global_var_a);  // global_var_a=test
                console.log("global_a="+global_a);  // global_a=test
            }
        </script>
    
        <!-- 另一script标签中 -->
        <script>
            console.log("-----------------------------");
    
            console.log("block_var_a="+block_var_a);    // block_var_a=test
            console.log("block_a="+block_a);    // block_a=test
            console.log("fun_a="+fun_a);    // fun_a=test
            console.log("global_var_a="+global_var_a);  // global_var_a=test
            console.log("global_a="+global_a);     // global_a=test
        </script>
    

      结论:

        1)不使用var声明的变量不管是在哪声明的,其作用域都是全局的

        2)javascript中不存在块级作用域

        3)只有在函数中使用var声明的变量其作用域是局部的, 其它都是全局的

    为什么不存在块级作用域?请看下面:

      ①:

    if(false){
      var value = 1;      
    }
    console.log(value);    // undifined
    

      ②:

    console.log(value);    // 报错
    

      在处理第①种情况时,会转变成:

    var vaule;
    if(false){
      value = 1;  
    }
    // ...
    

      所以打印vaule的值是undifined,而不是报错

  • 相关阅读:
    AtCoder Beginner Contest 167
    AtCoder Beginner Contest 166
    AtCoder Beginner Contest 165
    AtCoder Beginner Contest 164
    AtCoder Beginner Contest 163
    AtCoder Beginner Contest 162
    AtCoder Beginner Contest 161
    AtCoder Beginner Contest 160
    AtCoder Beginner Contest 159
    自定义Mybatis自动生成代码规则
  • 原文地址:https://www.cnblogs.com/daemon-/p/8940904.html
Copyright © 2011-2022 走看看