执行以下代码,输出的a值为 undefined

发布时间 2023-11-10 18:21:08作者: 龙陌
if(! "a" in window){
    var a = 1;
}
alert(a);

官方解析:
由于存在变量提升,在if语句执行之前会先使用var声明变量a,并且声明时是在全局作用域下,因此变量a自动成为window对象的属性,
故a in window的返回结果为true,
“!”将条件取反后返回结果为false,所以不会执行if中的赋值语句,a值为undefined

变量在同一作用域中总是会将声明部分提升至顶部优先进行解析的, 注意这里是只会将声明提升,其余部分仍然在原位置。


  var a; 

  if(! "a" in window){ 

      a=1;


  } 

  alert(a); 

  // "prop in obj"其中prop是obj的属性名