“loose equality”(宽松相等)多用于编程语境,尤其在 JavaScript 中,指使用 == 进行相等比较时的规则:在比较两边值之前允许自动类型转换(type coercion),因此可能出现看似“不同类型却相等”的结果。(相对概念是 “strict equality” 严格相等:===。)
/luːs ɪˈkwɑːləti/
In JavaScript, 0 == "0" is true because of loose equality.
在 JavaScript 中,0 == "0" 会得到 true,因为宽松相等会进行类型转换。
Relying on loose equality can hide bugs, especially when values may be null, undefined, or strings that look like numbers.
依赖宽松相等可能会掩盖 bug,尤其当值可能是 null、undefined,或是“看起来像数字”的字符串时。
“loose”源自古诺斯语 lauss,有“松的、不严格的”之意;“equality”源自拉丁语 aequalitas(来自 aequus,“相等的、公平的”)。在 JavaScript 社区里,“loose equality”作为术语,用来强调 == 的比较规则不严格,会发生类型强制转换,以区别于 === 的“strict equality”。
== 的 Abstract Equality Comparison(抽象相等比较)规则 == 带来的意外转换 ==、=== 与强制类型转换机制