JavaScript==中的类型转换

JavaScript == 类型转换规则

如果两个操作数类型不同,“==”相等操作符也可能会认为它们相等。检测相等将会遵守如下规则和类型转换:

  • 如果一个值是 null ,另一个是 undefined ,则它们相等。
  • 如果一个值是数字,另一个是字符串,先将字符串转换为数字,然后使用转换后的值进行比较。
  • 如果其中一个值是 true ,则将其转换为 1 再进行比较。如果其中一个值是 false ,则将其转换为 0 再进行比较。
  • 如果一个值是对象,另一个值是数字或字符串,则使用 3.8.3 节所提到的转换规则将对象转换为原始值,然后再进行比较。对象通过 toString() 方法或者 valueOf() 方法转换为原始值。 JavaScript 语言核心的内置类首先尝试使用 valueOf() ,再尝试使用 toString() ,除了日期类,日期类只使用 toString() 转换。那些不是 JavaScript 语言核心中的对象则通过各自的实现中定义的方法转换为原始值。
  • 其他不同类型之间的比较均不相等。

参考:《Javascript权威指南》4.9.1

本站采用「署名 4.0 国际」进行许可。