【问题标题】:global scope and local scope in javascript [duplicate]javascript中的全局范围和本地范围[重复]
【发布时间】:2013-12-16 02:08:13
【问题描述】:

考虑以下 javascript 中的 sn-p。 以下 sn-p 的输出是: 第一个警报显示“未定义”,而第二个警报显示“2”

var a = 1;
function test(){
    alert(a);
    var a = 2;
    alert(a);
}
test();

为什么第一个警报没有显示全局变量 a 的值为 1?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    您所看到的是variable hoisting 在行动。

    这就是代码的解释方式:

    function test(){
        var a; // a === undefined
        alert(a);
        a = 2;
        alert(a);
    }
    

    【讨论】:

      【解决方案2】:

      在 JavaScript 中称为“提升”。你的函数会自动转换成这个:

      var a = 1;
      function test() {
        var a;
        alert(a);
        a = 2;
        alert(a);
      }
      test();
      

      很高兴阅读:http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-javascript-hoisting-explained/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-27
        • 2012-08-09
        • 2021-03-05
        • 2015-09-30
        • 2013-11-06
        • 2011-03-17
        • 1970-01-01
        • 2019-07-04
        相关资源
        最近更新 更多