JavaScript面试习题谁能分享分享?

一段让人疑惑的javascript代码,竟然成了大多公司热门面试题
一段让人疑惑的javascript代码,竟然成了大多公司热门面试题
故事和酒在这里
今天给大家看一个以前很火的面试题,关于一段令人疑惑的javascript代码题目如下:看不清楚的可以点击看大图答案是:如果有正在学习前端,不知道怎么学习,学习效率不高或者不知道行业前景,就业前景的也可以来一下我们头条前端群,有大神,有小白,每晚都会分享一些企业级的知识和面试技巧。问题问题,直接调用 getName 函数。既然是直接调用那么就是访问当前上文作用域内的叫getName的函数,所以跟1 2 3都没什么关系。此题有无数面试者回答为5。此处有两个坑,一是变量声明提升,二是函数表达式。变量声明提升即所有声明变量或声明函数都会被提升到当前函数的顶部。例如下代码:console.log('x' in window);//x = 0;代码执行时js引擎会将声明语句提升至代码最上方,变为:console.log('x' in window);//truex = 0;函数表达式var getName 与 function getName 都是声明语句,区别在于 var getName 是函数表达式,而 function getName 是函数声明。关于JS中的各种函数创建方式可以看 大部分人都会做错的经典JS闭包面试题 这篇文章有详细说明。函数表达式最大的问题,在于js会将此代码拆分为两行代码分别执行。如果有正在学习前端javascript的伙伴,不知道怎么学习,或者学习些什么才能找到工作的可以一起来我们的头条前端群,一整套前端学习路线及系统学习资料已上传群文件!例如下代码:console.log(x);//输出:function x(){}var x=1;function x(){}实际执行的代码为,先将 var x=1 拆分为 和 x = 1; 两行,再将 和 function x(){} 两行提升至最上方变成:function x(){}console.log(x);所以最终函数声明的x覆盖了变量声明的x,log输出为x函数。同理,原题中代码最终执行时的是:function Foo() {头条号里有许多web前端学习视频/源码,企业常用特效/案例/项目,敬请关注!
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
故事和酒在这里
百家号 最近更新:
简介: “展示世界上最新的最酷的技术产品,带你跟上科技”
作者最新文章}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信