使用"==",如果两个值类型不同,他们可能相等,因为"=="默认会进行类型转换,转换规则比较复杂:
a、如果一个是null、一个是undefined,那么[相等]。
b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
c、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
d、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。
使用"===",两个值的类型和数值必须都相等,他们才相等,"==="在进行比较时不会进行数据类型的转换。
10 == "10" // return true 10 === "10" // return false
建议永远不要使用"=="。
时间: 2024-10-08 13:56:34