JavaScript 最奇怪的比较

发布: (2026年2月16日 GMT+8 18:18)
2 分钟阅读
原文: Dev.to

Source: Dev.to

为什么 [] == false 为 true

[] == false   // true

== 运算符会进行 类型强制转换

  1. false 被转换为 0
  2. [] 首先被转换为一个空字符串 ""
  3. 空字符串 "" 随后被转换为 0

于是比较变成了:

0 == 0   // true

为什么 [] == ![] 为 true

[] == ![]   // true

求值步骤:

  1. ![] —— 空数组在布尔上下文中是 truthy,所以取反得到 false
  2. 表达式变为 [] == false,我们已经知道它的结果是 true(见上文)。

小结

== 运算符因为隐式的类型转换会产生令人惊讶的结果。
大多数开发者更倾向使用严格相等运算符 ===,它 不会 进行强制转换,从而避免这些陷阱。

[] === false   // false
[] === ![]     // false

了解强制转换的工作原理,就能消除 JavaScript 比较中的“怪异”。祝编码愉快! ✨

0 浏览
Back to Blog

相关文章

阅读更多 »

你为什么成为Developer?

封面图片:你为什么成为开发者? https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-t...