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,而不是报错

  • 相关阅读:
    java基础面试题-1
    深入探讨 Java 类加载器
    毕向东—Java基础知识总结(超级经典)
    nyoj-161-取石子 (四)
    nyist-751-破坏城市
    nyist-144-小珂的苦恼
    zoj-1047-I Think I Need a Houseboat
    zoj-1045-HangOver
    zoj-1037-Gridland
    hdoj-2268-How To Use The Car
  • 原文地址:https://www.cnblogs.com/daemon-/p/8940904.html
Copyright © 2011-2022 走看看