search

Home  >  Q&A  >  body text

javascript - 为什么这里面的a已经存在?

javascriptif('a' in window) {
  var a = 10;
}

alert(a);

依然可以输出10,为什么?

阿神阿神2902 days ago299

reply all(3)I'll reply

  • 巴扎黑

    巴扎黑2017-04-10 15:04:09

    var会提前声明,而其实{…}内的变量也会提前声明。于是代码还没执行前,a变量已经被声明,于是 ‘a’ in window 返回true,a被赋值。

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:04:09

    因为。。
    js的声明可以延后呀
    在你var a出现的时候 函数作用域链就有a了。所以'a' in window 这时候又给a赋值10,
    就有a是10啦~

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:04:09

    if('a' in window) {
    var a = 10;
    }
    alert(a);

    可看作:
    var a;
    if('a' in window) {
    a= 10;
    }
    alert(a);

    reply
    0
  • Cancelreply