function test(){
var t = "a";
if(t in window){
var a = 1;
}
alert(a);
}
//弹出undefined
function test(){
if(t in window){
var t = "a";
var a = 1;
}
alert(a);
}
//弹出1
请问大神,这是为什么?一个在if块外面一个在if块里面,对if条件语句有什么影响,求解
js?
window
a
undefined
------解决方案--------------------
恩,
预编译的问题。
放外面的时候var t = 'a';t就不是undefined了。
放里面的时候执行到if的时候t还是undefined,而undefined算是一个特殊的数据类型,window下是可以直接访问的,所以undefined in window就是ture了。
两段代码预编译后是这个样子的:
function test(){
var t = "a"//此时t='a'
var a ;
if(t in window){
a = 1;
}
alert(a);
}
//弹出undefined
function test(){
var t;
var a;
if(t in window){
t = "a";
a = 1;
}
alert(a);
}
//弹出1
简单的说你试一下
undefined in window
就知道了
------解决方案--------------------
直接
for(x in window){
console.log(x+":"+window[x])
};
看看window里面包含不含自定义的变量就清楚了