资讯专栏INFORMATION COLUMN

一道面试题

sihai / 1010人阅读

摘要:写在前面这道题是本人在面试一家公司时的一个简单的基础问题,公司就不透露了,算是国内很有名的公司,本人面试的只是实习岗位。

写在前面

这道题是本人在面试一家公司时的一个简单的基础问题,公司就不透露了,算是国内很有名的公司,本人面试的只是实习岗位。一些大的问题就不再说了,每个人遇到的可能都是不一样的,基本会围绕着我们平常所常用的东西来聊,下面就说一道小题:

题目

写出下面几个表达式的结果:

NaN == NaN
[] == false
!![] == false
{} == false
undefined == null

这道题我估计很多人都会答错,本人就答错了,下面就来分析分析:

NaN == NaN

这个只需要理解NaN是什么就好,NaN代表的是Not a Number,代表的是一个不可以表示的值,而非一个具体的值,所以NaNNaN并不相等。

==比较的仅仅是值,而值+类型,所以==会发生隐式的类型转换,所以有必要先来看一下ECMA规范:

上图是规范,下面我就来翻译下上面说的:

undefined == null => true

Number类型与String类型比较的话,那么会对String类型进行类型转换。

假如含有Boolean类型的话,会先将Boolean类型转化为Number类型。

假如是基本类型与引用类型比较的话,会先尝试对引用类型进行转化。

了解了这部分规范后,就可以解决undefined == null啦,根据规范会返回true

对于引用类型的转化,又有如下规则:

简单来说就是有两种处理方式:

假如obj instanceof Stringtrue,则会优先调用toString

假如不是String类型,则会优先调用valueOf方法

下面来继续看上面的题目:

[] == false     // true

[]会首先尝试调用valueOf方法,[].valueOf()返回是[],再调用toString方法,[].toString()返回的是空字符串,则比较的是"" == false,依据规范进行转化:

"" == Number(false)    =>  "" == 0
Number("") == 0        =>   0 == 0

对于{} == false来说也是相同的道理,将其转化为[object Object] == false,答案也很明了,返回的肯定是false

再来看!![] == false,首先来看一运算符的优先级,链接中的表格写出了各种运算符的优先级,根据表格可以知道的就是!的优先级高于==,而!!将表达式转化为Boolean类型,!![]返回的是true,所以!![] == false值为false

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88177.html

相关文章

  • 一道JS面试引发的血案

    摘要:项目组长给我看了一道面试别人的面试题。打铁趁热,再来一道题来加深下理解。作者以乐之名本文原创,有不当的地方欢迎指出。 showImg(https://segmentfault.com/img/bVbur0z?w=600&h=400); 刚入职新公司,属于公司萌新一枚,一天下午对着屏幕看代码架构时。BI项目组长给我看了一道面试别人的JS面试题。 虽然答对了,但把理由说错了,照样不及格。 ...

    fantix 评论0 收藏0
  • 一道多线程面试引起的自我救赎

    摘要:重温一个面试题内容数组内容为数组内容为个英文字母,使用两个线程分别输入两个数组,打印内容为这样的规律提取一下核心内容,去除次要内容两个线程需要交替执行,打印数字的线程需要先执行,数组打印完毕后线程需要结束。 一道多线程面试题引起的自我救赎 近日去一个知名互联网企业参加面试,之前准备多多信心满满,但是面试一开始就是一道不起眼的编程题 数组A内容为 1,2,3,4...52 ,数组B内容...

    BaronZhang 评论0 收藏0
  • 前端面试 - 收藏集 - 掘金

    摘要:一基础接口的意义百度规范扩展回调抽象类的意义我的前端面试经历百度前端掘金博主就读于电子科技大学,大三狗一枚面试是个漫长的过程,从海投到收获电话面试,一面二面三面,一个步骤出错那么后面就宣告终结。 一道常被人轻视的前端 JS 面试题 - 前端 - 掘金 目录前言第一问第二问变量声明提升函数表达式第三问第四问第五问第六问构造函数的返回值第七问最后前言 年前刚刚离职了,分享下我曾经出过的一道...

    lpjustdoit 评论0 收藏0
  • JavaScript中的map方法,以及一道js面试

    摘要:今天看见一道面试题答案是多少答案是对方法不太了解就去搜了一下,里面也包含了对这道面试题的详解。方法返回一个由原数组中的每个元素调用一个指定方法后返回值组成的新数组。使用方法处理数组时,数组元素的范围在方法第一次调用之前就已经确定了。 今天看见一道面试题:[1,2,3].map(parseInt)答案是多少?答案是[1,NaN,NaN] 对map()方法不太了解就去搜了一下:Array....

    LittleLiByte 评论0 收藏0
  • 前端面试一道算法(使用canvas解答)

    摘要:据了解,现在前端面试也喜欢考算法题了。下面说一个跟前端有点相关并且有点趣的一道算法题。遍历二维数组连续的个数连续的个数形状的总数第几个形状形状的面积最后的代码图片路径读取整张图片的像素。 据了解,现在前端面试也喜欢考算法题了。前几天去面试,果不其然的,面试官给我四道算法题,让我自己回去做。下面说一个跟前端有点相关并且有点趣的一道算法题。 题目: 平面上有若干个不特定的形状,如下图所示...

    hot_pot_Leo 评论0 收藏0

发表评论

0条评论

sihai

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<