相等和不相等
==、!=
执行前会先进行转换(强制类型转换),转换规则:
- 有
boolean类型,先转换为number类型。true转换为1,false转换为0。 string和number,先转换为number。- 一个为object,另一个不是。先调用object的valueOf方法取得其原始值,再比较。
比较规则:
undefined等于null。undefined和null不能转换为其它类型再比较。- 有
NaN,则为false。NaN == NaN结果为false。 - 两个都是
object,如果两个变量指向同一个对象,则为true。
| 表达式 | 结果 |
|---|---|
null == undefined | true |
'NaN' == NaN | false |
5 == NaN | false |
NaN == NaN | false |
NaN != NaN | true |
false == 0 | true |
true == 1 | true |
true == 2 | false |
undefined == 0 | false |
null == 0 | false |
'5' == 5 | true |
全等和不全等
===、!==
类型和值都必须一致
只有以下一种情况用==,其余都用===
obj == null
// 比较简洁,等同于
obj == null || obj == undefined