相等(==) 您所在的位置:网站首页 返回ture和false 相等(==)

相等(==)

2024-04-17 16:31| 来源: 网络整理| 查看: 265

相等运算符(== 和 !=)提供非严格相等语义。这可以大致总结如下:

如果操作数具有相同的类型,则按如下方式进行比较: 对象(Object):仅当两个操作数引用同一个对象时返回 true。 字符串(String):只有当两个操作数具有相同的字符且顺序相同时才返回 true。 数值(Number):如果两个操作数的值相同,则返回 true。+0 和 -0 被视为相同的值。如果任何一个操作数是 NaN,返回 false;所以,NaN 永远不等于 NaN。 布尔值(Boolean):仅当操作数都为 true 或都为 false 时返回 true。 大整形(BigInt):仅当两个操作数值相同时返回 true。 符号(Symbol):仅当两个操作数引用相同的符号时返回 true。 如果其中一个操作数为 null 或 undefined,另一个操作数也必须为 null 或 undefined 以返回 true。否则返回 false。 如果其中一个操作数是对象,另一个是基本类型,按此顺序使用对象的 @@toPrimitive()(以 "default" 作为提示),valueOf() 和 toString() 方法将对象转换为基本类型。(这个基本类型转换与相加中使用的转换相同。) 在这一步,两个操作数都被转换为基本类型(String、Number、Boolean、Symbol 和 BigInt 中的一个)。其余的转换是逐个进行的。 如果是相同的类型,使用步骤 1 进行比较。 如果其中一个操作数是 Symbol 而另一个不是,返回 false。 如果其中一个操作数是布尔型而另一个不是,则将布尔型转换为数字:true 转换为 1,false 转换为 0。然后再次松散地比较两个操作数。 Number to String:使用与 Number() 构造函数相同的算法将字符串转换为数字。转换失败将导致 NaN,这将保证相等是 false。 Number to BigInt:按数值进行比较。如果数值为 ±∞ 或 NaN,返回 false。 String to BigInt:使用与 BigInt() 构造函数相同的算法将字符串转换为 BigInt。如果转换失败,返回 false。

宽松相等是对称的:A == B 对于 A 和 B 的任何值总是具有与 B == A 相同的语义(应用转换的顺序除外)。

该运算符与严格相等(===)运算符之间最显著的区别是,严格相等运算符不尝试类型转换。相反,严格相等运算符总是认为不同类型的操作数是不同的。严格相等运算符本质上只执行第 1 步,然后对所有其他情况返回 false。

上面的算法有一个“故意违反”:如果其中一个操作数是 document.all,则它被视为 undefined。这意味着 document.all == null 是 true,但 document.all === undefined && document.all === null 是 false。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有