相等操作符:双等==、三等===

258 阅读1分钟

相等和不相等

==!= 执行前会先进行转换(强制类型转换),转换规则

  1. boolean类型,先转换为number类型。true转换为 1false转换为 0
  2. stringnumber,先转换为number
  3. 一个为object,另一个不是。先调用object的valueOf方法取得其原始值,再比较。

比较规则

  1. undefined等于null
  2. undefinednull不能转换为其它类型再比较。
  3. NaN,则为falseNaN == NaN结果为false
  4. 两个都是object,如果两个变量指向同一个对象,则为true
表达式结果
null == undefinedtrue
'NaN' == NaNfalse
5 == NaNfalse
NaN == NaNfalse
NaN != NaNtrue
false == 0true
true == 1true
true == 2false
undefined == 0false
null == 0false
'5' == 5true

全等和不全等

===!== 类型和值都必须一致

只有以下一种情况用==,其余都用===

obj == null
// 比较简洁,等同于
obj == null || obj == undefined