龙空技术网

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

盆盆儿web前端 940

前言:

今天朋友们对“js试题”可能比较注重,看官们都想要了解一些“js试题”的相关内容。那么小编同时在网上汇集了一些有关“js试题””的相关文章,希望你们能喜欢,你们快快来学习一下吧!

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

var i = 5;function test(){ var i = 4; var innerFunction = new Function('console.log(i);'); innerFunction();}test();

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

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

结果居然是5!

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

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

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

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

ReferenceError: i is not defined

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

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

标签: #js试题