JS中 '==' 的隐式类型转换

看到一篇好文(https://juejin.im/post/5d43bcb36fb9a06b2f5f920f),评论区还有高手打架,旁观者收益不少,因此总结一发。

如果 == 两侧是不同类型的值,则会引发隐式类型转换。那么转换的规则是什么?什么时候是true或false呢?

记住下面几条转换规则,妈妈再也不担心我懵逼

规则一:若字符串和数字进行比较,那么字符串转数字。

'0' == 0 // true '0'=> 0

规则二:若复杂数据类型和简单数据类型比较,那么复杂数据类型需要先转成简单数据类型,再进行比较。

——首先尝试调用valueOf方法转成简单类型,若不能,转而调用toString方法转成字符串(简单类型),再用规则一比较。

[] == 0    // true, [] => '' => 0     
[] == '0' // false, [] => ''

规则三:x 是 undefined || null 且 y 是undefined || null,直接返回true。另外有NaN直接返回false

发布了34 篇原创文章 · 获赞 1 · 访问量 7894

猜你喜欢

转载自blog.csdn.net/landiyaaa/article/details/98241473