js判断2个值是否相等的规则

版权声明:如果这篇文章对你有所帮助,请点个赞~~~ https://blog.csdn.net/qq_35087256/article/details/84564975

假设需要判断的是 x==y?

1. 如果 x 不是正常值(比如抛出一个错误),中断执行。
2. 如果 y 不是正常值,中断执行。
3. 如果 Type(x)Type(y) 相同,执行严格相等运算 x === y 。
4. 如果 x 是 null , y 是 undefined ,返回 true5. 如果 x 是 undefined , y 是 null ,返回 true6. 如果 Type(x) 是数值, Type(y) 是字符串,返回 x == ToNumber(y) 的结果。
7. 如果 Type(x) 是字符串, Type(y) 是数值,返回 ToNumber(x) == y 的结果。
8. 如果 Type(x) 是布尔值,返回 ToNumber(x) == y 的结果。
9. 如果 Type(y) 是布尔值,返回 x == ToNumber(y) 的结果。
10. 如果 Type(x) 是字符串或数值或 Symbol 值, Type(y) 是对象,返回 x == ToPrimitive(y) 的结果。
11. 如果 Type(x) 是对象, Type(y) 是字符串或数值或 Symbol 值,返回 ToPrimitive(x) == y 的结果。
12. 返回 false

其中,ToPrimitive(obj)等价于:先计算obj.valueOf(),如果结果为原始值,则返回此结果;否则.计算obj.toString(),如果结果是原始值,则返回此结果;否则,抛出异常

猜你喜欢

转载自blog.csdn.net/qq_35087256/article/details/84564975
今日推荐