一个变量作用域基础面试题

Posted on 2016-12-13 10:22  碧哥  阅读(150)  评论(0)    收藏  举报

最近找工作,遇到了这样一个js基础试题:

问运行结果。

当时我给出的答案是:“报错:b is not a function!”,然而技术面的姐姐说我的错了,让我再重新看一遍题,然后我就懵逼了;

回到家在电脑上运行了这段代码,得出的结果是:

所以其实我的答案是对的;

这题考察的主要是变量作用域的知识以及变量声明的提升,浏览器在读取这段代码时,会优先将变量及函数的声明提前保存到内存中,因此,上面的代码等同于:

当运行b()时,b是一个字符串,因此会报错。

将原代码稍微改一改成:

此时代码不会报错,得出的结果是:

原因同上,我想技术面姐姐应该是把代码看成了这个。。。。。。

加油吧,少年!

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3