可以说是堪称前端笔试杀手了。
dmitry.baranovskiy.com/post/91403200
if(!("a"inwindow)) {
var a = 1;
}
alert (a);
考察了js的作用域和变量提升。
事实上这段代码会变成这样:
var a;
if(!("a"inwindow)) { //if(!(true))-->false
a = 1;
}
alert (a);//undefined
二
var a = 1,
b=function a (x) {
x&& a (--x);
};
alert (a);//1
三
function a (x) {
return x * 2;
}
var a;
alert (a);//[Function: a]
变量提升,别纠结。
四
function b (x, y, a) {
arguments[2] = 10;
alert (a);
}
b(1, 2, 3);//10
五
function a () {
alert (this);
}
a.call (null);//[object Window]
一看this就知道有猫腻。
call方法的定义:如果第一个参数传入的对象调用者是null或者undefined的话,call方法将把全局对象(也就是window)作为this的值。
写到这里,我本以为自己已经搞懂call和apply还有this,看来还是要重新写个笔记学学。