代码1:
1 if (!("a" in window)) { 2 var a = 1; 3 } 4 alert(a);
显示:undefined
解释:开始a为undefined,但undefined,但 undefined当然存在于window中,So...
代码2:
1 var a = 1, 2 b = function a(x) { 3 x && a(--x); 4 }; 5 alert(a);
显示:1
解释:方法a只能在a方法中调用,即a(),其它域使用b(),以a作为b方法的方法名.
代码3:
1 function a(x) { 2 return x * 2; 3 } 4 var a; 5 alert(a);
显示:
function a(x) {
return x * 2;
}
解释:var a;仅是定义,并无赋值.
代码4:
1 function b(x, y, a) { 2 arguments[2] = 10; 3 alert(a); 4 } 5 b(1,2,3);
显示:10
(PS:b(1,2,3)不论怎么修改数字,都不影响弹出a的值)
解释:输出arguments每个值都与参数有引用关系;
代码5:
1 function a() { 2 alert(this); 3 } 4 a.call(null);
显示:[Object Window]
解释:a()/a.call()/a.call(null);无区别,
参考资料: