1.var a=b=5相当于拆解成var a=b; b=5;
2.然后,b=5前面没有var,相当于声明为全局变量.
3.所以就相当于:
var b;
(fun…{ var a=b; b=5; })();
console.log(b); //5
console.log(a); // Uncaught ReferenceError: a is not defined 报错
------------------------------
1.(function(){
alert(a);
alert(b);
var a=b=
3
;
alert(a);
alert(b);
})();
alert(a);
alert(b);
2. var a=b; b = 3; b是全局;
3. 结果
undefined,undefined,3,3,undefined,3;
--------------------------------------------------------再加一题
if
(!
"a"
in window){
var a =
1
;
}
alert(a);
解:
if(! "a" in window)这句代码的意思是:判断全局对象window中是否有变量a,如果没有变量a,就进入判断将a赋值为1
但是由于变量的提前声明,以上代码与如下代码等价:
var a;
if(!“a” in window ){
a=1;
}
alert(a);
由于变量的提前声明特性,在执行这段代码之后,全局对象window中就已经存在a这个变量了
所以不能进入判断,对a进行赋值
所以a的值为undefined