码迷,mamicode.com
首页 > 其他好文 > 详细

面试题总结

时间:2019-01-10 10:50:41      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:define   是的   对比   就会   get   原始类型   结果   转换   detail   

一、== 和 === 有什么区别?

=== 就是判断两者类型和值是否相同。

对于 == 来说,如果对比双方的类型不一样的话,就会进行类型转换

  1. 首先会判断两者类型是否相同。相同的话就是比大小了
  2. 类型不相同的话,那么就会进行类型转换
  3. 会先判断是否在对比 null 和 undefined,是的话就会返回 true
  4. 判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number
  5. 判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断
  6. 判断其中一方是否为 object 且另一方为 stringnumber 或者 symbol,是的话就会把 object 转为原始类型再进行判断

闲着看一个面试题:

参考地址:https://blog.csdn.net/qiqi_77_/article/details/79456605

[]==[] // false 

俩边都是相同数据类型,直接比较大小。因为[]属于引用类型,俩个[]指向不同的堆内存,所以比较的结果为false

[]==![]

现在开始分析,!的优先级要大于==,先执行右边的![],![]=>false

之后就是比较[]==false

适用上面第5条规则:先把flase转换为0,,结果就是比较[]==0

然后适用第6条规则,[]转换为值,Number([]) = 0

所以0==0  结果胃true

 

面试题总结

标签:define   是的   对比   就会   get   原始类型   结果   转换   detail   

原文地址:https://www.cnblogs.com/zhaobao1830/p/10247910.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!