JavaScript==中的类型转换
JavaScript == 类型转换规则
如果两个操作数类型不同,“==”相等操作符也可能会认为它们相等。检测相等将会遵守如下规则和类型转换:
- 如果一个值是 null ,另一个是 undefined ,则它们相等。
- 如果一个值是数字,另一个是字符串,先将字符串转换为数字,然后使用转换后的值进行比较。
- 如果其中一个值是 true ,则将其转换为 1 再进行比较。如果其中一个值是 false ,则将其转换为 0 再进行比较。
- 如果一个值是对象,另一个值是数字或字符串,则使用 3.8.3 节所提到的转换规则将对象转换为原始值,然后再进行比较。对象通过 toString() 方法或者 valueOf() 方法转换为原始值。 JavaScript 语言核心的内置类首先尝试使用 valueOf() ,再尝试使用 toString() ,除了日期类,日期类只使用 toString() 转换。那些不是 JavaScript 语言核心中的对象则通过各自的实现中定义的方法转换为原始值。
- 其他不同类型之间的比较均不相等。
参考:《Javascript权威指南》4.9.1
本站采用「署名 4.0 国际」进行许可。