So, you think you know JavaScript?

可以说是堪称前端笔试杀手了。

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,看来还是要重新写个笔记学学。

你可能感兴趣的:(So, you think you know JavaScript?)