美文网首页程序员互联网科技
据说这道Javascript试题极少数人能够答出来,你怎么看?

据说这道Javascript试题极少数人能够答出来,你怎么看?

作者: 8b5cc58dcfe6 | 来源:发表于2018-11-29 15:35 被阅读4次
web前端学习扣qun:584226069免费领取全套教学视频资料!

Q : 在浏览器中执行如下的代码片段,请写出运行结果。

var i = 5;

function test(){

var i = 4;

var innerFunction = new Function('console.log(i);');

innerFunction();

}

test();

如果你不清楚这道题考察的知识点,凭瞎蒙可能很多人会觉得答案是 4。

那么我们就一起来见证它的执行结果吧

web前端学习扣qun:584226069免费领取全套教学视频资料!

结果居然是5!

web前端学习扣qun:584226069免费领取全套教学视频资料!

这道题其实考察的是 "Function" 构造函数的性质,如果我们使用 new Function(...)来构造一个 function ,那么该 function 实际上是一个匿名函数,而匿名函数内部的 this 是指向全局的,在浏览器中也就是 window 对象。到这里,结果就不言而喻了,"console.log(i)"中的变量 “i”自然是到全局中去搜索, 输出结果就是 5 。

但是!!!!!!!!!!!!!!!

web前端学习扣qun:584226069免费领取全套教学视频资料!

为什么问题特别强调了“在浏览器中执行”呢?如果在nodejs 环境中执行包含上述代码的一个js文件,会得到什么结果呢?

在这里偷偷告诉大家:结果是:

ReferenceError: i is not defined

至于这是为什么呢?那就读者自己去体会吧!

web前端学习扣qun:584226069免费领取全套教学视频资料!

PS : 如果这篇文章让你有所收获,别忘了点赞并关注哦,批评指正,每天积累一点,让我陪你在大牛的路上越走越远!

相关文章

网友评论

    本文标题:据说这道Javascript试题极少数人能够答出来,你怎么看?

    本文链接:https://www.haomeiwen.com/subject/mlhfcqtx.html