Object.is()
Object.is()
静态方法判断两个值是否为 相同的值。
¥The Object.is()
static method determines whether two values are the same value.
Try it
语法
参数
返回值
描述
¥Description
Object.is()
确定两个值是否为 相同的值。如果满足以下条件之一,则两个值相同:
¥Object.is()
determines whether two values are the same value. Two values are the same if one of the following holds:
- 都是
undefined
- 都是
null
- 两者都是
true
或两者都是false
- 两个字符串具有相同的长度、相同的字符且顺序相同
- 都是同一个对象(意味着两个值都引用内存中的同一个对象)
- 两个 BigInts 具有相同的数值
- 两个 symbols 引用相同的符号值
- 两个数字和
Object.is()
不等于 ==
运算符。==
运算符在测试相等性之前对双方应用各种强制转换(如果它们不是同一类型)(导致 "" == false
成为 true
之类的行为),但 Object.is()
不会强制任一值。
¥Object.is()
is not equivalent to the ==
operator. The ==
operator applies various coercions to both sides (if they are not the same type) before testing for equality (resulting in such behavior as "" == false
being true
), but Object.is()
doesn't coerce either value.
Object.is()
也不等同于 ===
运算符。Object.is()
和 ===
之间的唯一区别在于它们对有符号零和 NaN
值的处理。===
运算符(和 ==
运算符)将数值 -0
和 +0
视为相等,但将 NaN
视为彼此不相等。
¥Object.is()
is also not equivalent to the ===
operator. The only difference between Object.is()
and ===
is in their treatment of signed zeros and NaN
values. The ===
operator (and the ==
operator) treats the number values -0
and +0
as equal, but treats NaN
as not equal to each other.
示例
使用 Object.is()
¥Using Object.is()
// 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
规范
Specification |
---|
ECMAScript Language Specification # sec-object.is |
浏览器兼容性
BCD tables only load in the browser
也可以看看
¥See also