Object.is()
Object.is()
静态方法确定两个值是否相同的值.
试用
语法
js
Object.is(value1, value2)
参数
返回值
一个布尔值,指示两个参数是否相同的值。
描述
Object.is()
确定两个值是否相同的值。如果以下任一条件成立,则两个值相同
- 两者都是
undefined
- 两者都是
null
- 两者都是
true
或两者都是false
- 两者都是相同长度的字符串,字符顺序相同
- 两者都是同一个对象(表示两个值都引用内存中的同一个对象)
- 两者都是BigInt,数值相同
- 两者都是符号,引用同一个符号值
- 两者都是数字,且
Object.is()
不等同于==
运算符。==
运算符在测试相等性之前,会对两边应用各种强制转换(如果类型不同)(导致 "" == false
为 true
这样的行为),但 Object.is()
不会强制转换任何值。
Object.is()
也不等同于===
运算符。Object.is()
与 ===
之间的唯一区别在于它们对有符号零和 NaN
值的处理方式。===
运算符(以及 ==
运算符)将数字值 -0
和 +0
视为相等,但将NaN
视为彼此不相等。
示例
使用 Object.is()
js
// Case 1: Evaluation result is the same as using ===
Object.is(25, 25); // true
Object.is("foo", "foo"); // true
Object.is("foo", "bar"); // false
Object.is(null, null); // true
Object.is(undefined, undefined); // true
Object.is(window, window); // true
Object.is([], []); // false
const foo = { a: 1 };
const bar = { a: 1 };
const sameFoo = foo;
Object.is(foo, foo); // true
Object.is(foo, bar); // false
Object.is(foo, sameFoo); // true
// Case 2: Signed zero
Object.is(0, -0); // false
Object.is(+0, -0); // false
Object.is(-0, -0); // true
// Case 3: NaN
Object.is(NaN, 0 / 0); // true
Object.is(NaN, Number.NaN); // true
规范
规范 |
---|
ECMAScript 语言规范 # sec-object.is |
浏览器兼容性
BCD 表仅在浏览器中加载