使用双等号==进行相等判断时,如果两边的类型不一致,则会进 行强制类型转化后再进行比较。
使用三等号===进行相等判断时,如果两边的类型不一致时,不会做强制类型准换,直接返回 false。
使用 Object.is 来进行相等判断时,一般情况下和三等号的判断相 同,它处理了一些特殊的情况,比如 -0 和 +0 不再相等,两个 NaN 是相等的。
Object.is()
方法是 JavaScript 中用于比较两个值是否相等的方法。它的行为类似于严格相等运算符(===),但有一些特殊的情况需要注意。
Object.is()
方法的语法如下:
Object.is(value1, value2)
其中,value1
和 value2
是要进行比较的两个值。
Object.is()
方法比较两个值并返回一个布尔值,表示这两个值是否相等。它的比较规则如下:
- 如果两个值都是
undefined
,则它们相等。- 如果两个值都是
null
,则它们相等。- 如果两个值都是
NaN
,则它们相等。- 如果两个值都是同一个对象(引用相等),则它们相等。
- 如果两个值都是字符串,并且它们包含相同的字符序列,则它们相等。
- 如果两个值都是数字,并且它们有相同的值(包括正零、负零和
NaN
),则它们相等。- 如果两个值都是布尔值,并且它们具有相同的值(
true
或false
),则它们相等。
除了上述情况外,
Object.is()
方法将返回false
。
下面是一些示例:
Object.is(5, 5); // true
Object.is('hello', 'hello'); // true
Object.is({}, {}); // false
Object.is([], []); // false
Object.is(null, null); // true
Object.is(undefined, undefined); // true
Object.is(NaN, NaN); // true
Object.is(0, -0); // false
Object.is(true, true); // true
需要注意的是,
Object.is()
方法与==
和===
运算符有一些不同之处。例如,===
运算符将-0
和+0
视为相等,但Object.is()
方法将它们视为不相等。同样,===
运算符将NaN
与任何其他值都视为不相等,但Object.is()
方法将NaN
视为相等。
在实际使用中,你可以根据具体的比较需求选择使用 Object.is()
方法或其他比较方式
如果帮助到您了,可以留下一个赞👍告诉我