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

  • 相关阅读:
    BZOJ 3625: [Codeforces Round #250]小朋友和二叉树
    HDU 2069 Coin Change
    HDU 1709 The Balance
    HDU 1398 Square Coins
    HDU 1171 Big Event in HDU
    HDU 1085 Holding Bin-Laden Captive!
    BZOJ 3167: [Heoi2013]Sao
    BZOJ 1408: [Noi2002]Robot
    BZOJ 3163: [Heoi2013]Eden的新背包问题
    【Tsinsen-A1486】树(王康宁) 点分治 + Trie
  • 原文地址:https://www.cnblogs.com/daemon-/p/8940904.html
Copyright © 2011-2022 走看看