跳到主要内容

Javascript ==和===有什么不同?

参考答案:

在JavaScript中,===== 都是用来比较两个值的运算符,但它们之间存在一些重要的区别。

== 是“等于”运算符,它会执行类型转换(也被称为“宽松相等性比较”或“抽象相等性比较”)。这意味着如果你比较两个不同类型的值,JavaScript会尝试将它们转换为同一类型,然后再进行比较。例如,如果你比较一个数字和一个字符串,JavaScript会尝试将字符串转换为一个数字,然后再进行比较。

0 == "0"  // true,因为 "0" 会被转换为数字 0
0 == ""   // true,因为空字符串被转换为 0

然而,这种类型转换可能会导致一些意想不到的结果:

null == undefined  // true
" \t\r\n" == 0  // true

===是“严格等于”运算符,它不会执行类型转换,如果两个值的类型和值都相等,那么它才会返回true`。这被称为“严格相等性比较”。

0 === "0"  // false,因为类型不同
null === undefined  // false,因为类型不同

因此,为了避免因类型转换导致的潜在问题,通常推荐在比较时使用 === 运算符,除非你有明确的理由需要使用 == 运算符。