Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
相等(==)运算符检查其两个操作数是否相等,返回一个布尔值结果。与严格相等运算符不同,它会尝试转换不同类型的操作数,并进行比较。
相等运算符(== 和 !=)提供非严格相等语义。这可以大致总结如下:
宽松相等是对称的:A == B 对于 A 和 B 的任何值总是具有与 B == A 相同的语义(应用转换的顺序除外)。
该运算符与严格相等(===)运算符之间最显著的区别是,严格相等运算符不尝试类型转换。相反,严格相等运算符总是认为不同类型的操作数是不同的。严格相等运算符本质上只执行第 1 步,然后对所有其他情况返回 false。
上面的算法有一个“故意违反”:如果其中一个操作数是 document.all,则它被视为 undefined。这意味着 document.all == null 是 true,但 document.all === undefined && document.all === null 是 false。
请注意,使用 new String() 构造的字符串是对象。如果将其中之一与字符串字面量进行比较,则该 String 对象将被转换为字符串字面量并对其内容进行比较。但是,如果两个操作数都是 String 对象,则将它们作为对象进行比较,并且必须引用相同的对象才会相等:
| ECMAScript® 2027 Language Specification # sec-equality-operators |
启用 JavaScript 以查看此浏览器兼容性表。