抽象相等(abstract equality):常见于编程(尤其是 JavaScript)中,指非严格相等比较(通常对应 ==),在比较两个值时允许进行类型转换(type coercion),从而在不同类型之间也可能判定为“相等”。(相对地,严格相等通常指 ===,不进行类型转换。)
注:在逻辑学/数学语境里也可泛指“在某个抽象层面定义的相等关系”,但现代英语里最常见的固定搭配多指 JavaScript/规范中的用法。
/ˈæb.strækt ɪˈkwɑː.lə.ti/
In JavaScript, abstract equality uses ==.
在 JavaScript 中,抽象相等使用 ==。
Because abstract equality performs type coercion, many style guides recommend strict equality to avoid surprising results like "0" == 0.
由于抽象相等会进行类型转换,许多代码规范建议使用严格相等,以避免出现诸如 "0" == 0 这类令人意外的结果。
abstract 源自拉丁语 abstractus(“抽离出来的、抽象的”),与“从具体细节中抽取概念”相关;equality 源自拉丁语 aequalitas(“平等、相等”),来自 aequus(“相等的、公平的”)。组合起来,“abstract equality”字面含义是“抽象层面的相等”,在 JavaScript 语境中被用作术语,特指规范里的抽象相等比较(与“严格相等比较”相对)。
== 相关条目):常用“abstract equality”来对比“strict equality”。== 的类型转换陷阱时常以“抽象/严格相等”的对比来阐释。