为什么会出现两种等于?
当比较数字、字符串时,情况比较简单,但需要比较 对象 Object
时问题就复杂了。JS提供的方法是提供了 相等 ==
(转换后再比较) 和 全等 ===
(直接比较) 两种操作符。
相等运算符 ( == )
在进行比较之前会进行 强制类型转换
,规则如下:
- 遇到
true/false
时先转换成0/1
。 - 字符串和数字比较时会先把
字符串转换成数字
。 - 对象和其他比较时,会调用对象的
valueOf()
方法。
同时比较时遵循以下规则:
null
和undefined
是相等的。NaN
跟谁比较都是false
,即使是用 2 个NaN
来比较。- 如果是两个对象,则比较他们是不是
指向
同一个对象
全等运算符 ( === )
基于👆相等运算符的强制类型转换特性,更多情况会使用全等运算符进行比较操作。
和 ( == ) 区别仅有一点:类型不一样,就返回
false