标签:define 是的 对比 就会 get 原始类型 结果 转换 detail
一、== 和 === 有什么区别?
===
就是判断两者类型和值是否相同。
对于 ==
来说,如果对比双方的类型不一样的话,就会进行类型转换
null
和 undefined
,是的话就会返回 true
string
和 number
,是的话就会将字符串转换为 number
boolean
,是的话就会把 boolean
转为 number
再进行判断object
且另一方为 string
、number
或者 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