脚本宝典收集整理的这篇文章主要介绍了ES5对于==的说明,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
比较 x == y, x 和 y 是值变量,返回 @L_777_0@ 或者 false.这样的比较判断遵循以下规律:
如果 x 和 y 的类型一致(仅包括Number,String,Null,Undefined,Boolean,Object。Symbol属于ES6)
- 如果 x 的类型是 Underfined,返回 true.
- 如果 x 的类型是 Null,返回 true.
-
如果 x 的类型是 Number,那么:
- 如果 x 的类型是 String,那么除非 x 和 y 的字符顺序完全相同,且长度相等。否则返回 flase.
- 如果 x 的类型是 Boolean,如果 x 和 y 都是 true 或 false.否则返回 flase.
- 如果 x 和 y 引用自相同 Object,返回 true.
如果 x 为 null 且 y 为 underfined,返回 true.
如果 x 为 underfined 且 y 为 null,返回 true.
如果 x 的类型为 Number 且 y 的类型为 String,返回的结果为 x == ToNumber(y).
如果 x 的类型为 String 且 y 的类型为 Number,返回的结果为 ToNumber(x) == y.
如果 x 的类型为 Boolean,返回的结果为 ToNumber(x) == y.
如果 y 的类型为 Boolean,返回的结果为 x == ToNumber(y).
如果 x 的类型为 String 或者 Number 且 y 的类型是 Object,返回的结果是 x == ToPRimITive(y).
如果 x 的类型为 Object 且 y 的类型是 String 或者 Number,返回的结果是 ToPrimitive(x) == y.
除以上情况,全部返回 false.
TIPS
-
以下类型转换规则
-
以下操作等式结果不变
- != B 的结果与 !(A==B) 相同
- == B 的结果与 B == A 相同,除了对A和B的判定顺序有区别以外其他等同
-
等式操作的传递性并不总是正确的.比如,存在两个含有相同字符的字符串对象;每一个字符串对象都可以被认为等同于该字符,但两个字符串对象并不相等:
- 字符串的比较仅仅是简单的顺序比较每个字符的值。并没有尝试使用更加复杂的,以语义为导向的字符定义或是字符串同性测试或是整理 Unicode 码的定义顺序。因此,仅根据Unicode标准规范,字符串值即可推测为不相等(比如不会比较全角和半角的编码差异)。实际上这个算法推测两端的字符串都已经是普通样式。
以上是脚本宝典为你收集整理的ES5对于==的说明全部内容,希望文章能够帮你解决ES5对于==的说明所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。