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的属性名
标签:undefined,代码,值为,window,var,声明,变量
From: https://www.cnblogs.com/longmo666/p/17824771.html