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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 1,707评论 0 6
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,120评论 1 10
  • 手执长剑,怀一腔为天下为苍生的热血、 什么功名利禄、荣华富贵,都入不了你的眼, 只想用自己手中这把剑,为天下不平事...
    Ma琛儿阅读 521评论 2 2
  • 渗透技巧--通过cmd上传文件的N种方法 1.debug debug是一个程序调试工具,功能包括:(win7以上版...
    Bugl0v3r阅读 4,801评论 0 1
  • 一直说到了毒死女孩时,主持人好像才回过神来,她连忙打断到“这位先生,很高兴你能关注我们的节目,您难道没有有趣的江城...
    眉若阅读 376评论 7 4