js == 判断
根据阮一峰介绍的算法文章分12部分可判断:
- 如果
x不是正常值(比如抛出一个错误),中断执行。 - 如果
y不是正常值,中断执行。 - 如果
Type(x)与Type(y)相同,执行严格相等运算x === y。 - 如果
x是null,y是undefined,返回true。 - 如果
x是undefined,y是null,返回true。 - 如果
Type(x)是数值,Type(y)是字符串,返回x == Number(y)的结果。 - 如果
Type(x)是字符串,Type(y)是数值,返回Number(x) == y的结果。 - 如果
Type(x)是布尔值,返回Number(x) == y的结果。 - 如果
Type(y)是布尔值,返回x == ToNumber(y)的结果。 - 如果
Type(x)是字符串或数值或Symbol值,Type(y)是对象,返回x == ToPrimitive(y)的结果。(对象变为原始值通过valueOf() ,toString()得到 - 如果
Type(x)是对象,Type(y)是字符串或数值或Symbol值,返回ToPrimitive(x) == y的结果。 - 返回
false。
一般是看最终能否变为number 原始值的比较, 布尔值false 变为0 ,空字符串'’ 变为0 ,‘12321’
object对象通过变为原始值变为对应的值(valueOf() ,toString(),原始类型有 Undefined、Null、Boolean、Number 和 String )
undefined 为null派生来的, 认为null == undefined ,但是数值类型不同
浙公网安备 33010602011771号