使用双等号==进行相等判断时,如果两边的类型不一致,则会进 行强制类型转化后再进行比较。
使用三等号===进行相等判断时,如果两边的类型不一致时,不会做强制类型准换,直接返回 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() 方法或其他比较方式
如果帮助到您了,可以留下一个赞👍告诉我