美文网首页程序员互联网科技
据说这道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