紧接着昨天的面试题(1),我们今天继续学习一道经典的面试题。

这道题一般会以笔试题的形式出现,题目如下,看代码:

(function(){      var a = b = 3;
})();

console.log(typeof a == 'undefined');console.log(typeof b == 'undefined');

问:下面的代码将输出什么到控制台,为什么?

这个时候,部分开发者就会认为,变量a和b都是声明定义在匿名函数内部的,属于函数内的局部变量,如果要在函数外部进行打印调用,a和b则为undefined。所以最后两行代码打印的结果都是true。

然而结果并非如此,之所以这么理解的原因是,他们把

var a = b = 3;

这句代码错误地理解为等同于:

var b = 3;var a = b;

而事实上,它等同于:

b = 3;var a = b;

区别在哪里相信你也看出来来,这个时候的变量b声明是不加关键字var的,也就是说变量b是全局变量(隐式全局变量)。

所以最后我们得到的结果分别是:true和false。

刁钻一点的面试官可能会追问:在严格模式下(使用 use strict),又会是什么结果?

这里就要注意一点了,在严格模式下我们运行后得到的结果是:

报错:b is not undefined

这也正是因为严格模式的这个特点,可以避免很多不必要的bug(全局变量污染)。

这道题的关键点在于理解javascript变量定义的特殊情况。希望大家紧记这一点,明天继续下一道经典面试题。

热门文章

原创教程

原创教程:《ECMAScript 6 教程》

附加习题:《ECMAScript 6 教程》测试题

原创教程:《Vue2.0基础教程》

原创教程:《Vue2.0进阶教程》

附加习题:《Vue2.0基础教程》测试题

趣味职场

职场感悟:混口饭吃,谈不上喜欢

学习困惑:工作用jquery,原生js知道就够

职场焦虑:程序员回三四线城市能干啥?

感到迷茫:我很努力,但依然很迷茫

薪资待遇:那么点工资,能招到人吗?

培训出身:我是一个培训出身的程序员

培训费用:花1.8万参加前端培训,值吗?

培训简历:简历包装成1-2年经验,咋办?

搞笑黑话:互联网公司黑话,搞笑到爆

职业自由:程序员职业自由的6个阶段

职场形象:在别人眼里,程序员是这样的

合作推广分割线

经典面试题(2):下面的代码将输出什么到控制台?相关推荐

  1. 经典面试题(40):以下代码将输出的结果是什么?

    web前端教程 用大白话,来讲编程 最近几天工作任务比较忙,没抽时间来给大家推送习题,今天续上. 我们先来回顾上一题<经典面试题(39)>.看投票结果,正确的答案是选项:C,绝大部分同学选 ...

  2. 经典面试题(26):以下代码将输出的结果是什么?

    我们先来回顾上一题<经典面试题(25)>.看投票结果,答案B和答案D选的人数旗鼓相当,到底哪个才是正确的答案呢? 正确的答案是选项:D ["1",empty x 2]. ...

  3. 经典面试题(21):以下代码将输出的结果是什么?

    周末外出了两天,没有持续给大家带来新的题目,久等了! 今天我们先来回顾一下上周五的题目<经典面试题(20)>.看投票结果,大部分小伙伴都选错了! 正确的答案是选项:C.调用在该作用域未声明 ...

  4. 经典面试题(20):以下代码将输出的结果是什么?

    昨天<经典面试题(19)>的答案我自己没有留言,因为你们一个个解析得实在太好,感觉都没我啥事了,同样,你们优秀的答案解析已经被置顶啦. 我们回顾一下,看看几个优秀的答案分析: 当然,还有点 ...

  5. 经典面试题(19):以下代码将输出的结果是什么?

    昨天<经典面试题(18)>的结果已经公布,小伙伴都解析得十分清晰到位,已经被置顶为标准答案. 答案被点赞做多的属于这位小伙伴: 自己搞懂,和能把已经掌握的知识逻辑清晰地表达出来,教会别人, ...

  6. 经典面试题(18):以下代码将输出的结果是什么?

    昨天<经典面试题(17)>大家都很踊跃留言,很多小伙伴解析得十分清晰到位,已经被置顶为标准答案.看来个个都是大佬. 由于微信只允许置顶5个留言,所以只挑选了解析得更清晰易懂的几位小伙伴的答 ...

  7. 经典面试题(17):以下代码将输出的结果是什么?

    昨天<经典面试题(16)>大家都很踊跃留言,尝试去解析自己的答案,有几位小伙伴解析得十分清晰到位,已经被置顶为标准答案. 不管答对还是答错,尝试动脑去思考,相信总会有所收获!如果看了标准答 ...

  8. 经典面试题(16):以下代码将输出的结果是什么?

    继续我们的经典面试题,前两篇在码字上注意力有些许不集中,出现了错误,再次对大家表示抱歉. 而今天这道题主要考察的是JavaScript中生僻冷门用法和容易忽视混淆的概念,据说有不少人答错了. 这段代码 ...

  9. 经典面试题(53):以下代码将输出的结果是什么?

    web前端教程 用大白话,来讲编程 我们先来回顾上一题<经典面试题(52)>.看投票结果,很多同学在A和B之间犹豫不决,正确的答案是:B! 有疑惑的同学,可以看看下面@相逢在雨季 和 @弓 ...

  10. 经典面试题(52):以下代码将输出的结果是什么?

    web前端教程 用大白话,来讲编程 我们先来回顾上一题<经典面试题(51)>.看投票结果,正确的答案是选项:C,绝大部分同学选对了! 有疑惑的同学,可以看看下面@方呵呵 和 @弓备 给我们 ...

最新文章

  1. 写了一个PPT,用于公司内部培训
  2. WinCvs里登录出现C:/cvs: no such repository解决方案
  3. layui使用方法——图标
  4. 华为校园招聘Java机试题
  5. JDBC(二)驱动程序类型发展历程
  6. SDOI2005 区间
  7. java基础----Java中枚举的使用(一)
  8. mysql对测试如何_我如何对MySQL进行基准测试?
  9. java反射源码_java反射技术详解附源码
  10. 搜狐-新闻页 粗略整理-自我学习
  11. QTextEdit显示中文乱码解决,中文GB2312转Unicode,QString、QByteArray 转换,16进制显示,toUtf8与toLocal8Bit区别
  12. 软件工程师的衰落与程序技术员的兴起
  13. 第1节 kafka消息队列:5、javaAPI操作
  14. 程序中使用log4J打印信息的两种方式
  15. 无法远程连接 mysql(Ubuntu)
  16. url编码 java_java中的url 编码与解码
  17. 软考之项目网络图(活动图)
  18. 来自2022年的Python 网络爬虫补充知识,HTML+JSON+爬虫场景
  19. java微信头像失效问题,将微信头像上传至七牛云
  20. Tesla M40 使用分享

热门文章

  1. 最新遇到的面试题20210319
  2. 2020快手食品行业数据价值报告
  3. 2020快手K12教育培训行业数据价值报告
  4. 产品经理需要向上思考
  5. 作者:周涛(1979-),男,博士,启明星辰教授级高级工程师、大数据实验室副主任。...
  6. 作者:牛海波,男,中国国防科技信息中心工程师。
  7. 【Java】Maven工程目录下ImageIcon读图片失败爆空指针的解决方案
  8. 洛谷P5709、P5710、P5711、P5712题题解(Java语言描述)
  9. 【面向对象】面向对象程序设计测试题7-对象之间的has-a/many关系测试题
  10. Scrapy 爬虫框架五—— 常见的反爬虫技术