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

1536

被折叠的 条评论
为什么被折叠?



