Object.is()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
Phương thức tĩnh Object.is() xác định xem hai giá trị có phải là cùng một giá trị hay không.
Try it
console.log(Object.is("1", 1));
// Expected output: false
console.log(Object.is(NaN, NaN));
// Expected output: true
console.log(Object.is(-0, 0));
// Expected output: false
const obj = {};
console.log(Object.is(obj, {}));
// Expected output: false
Cú pháp
Object.is(value1, value2)
Tham số
Giá trị trả về
Một boolean cho biết hai đối số có phải là cùng giá trị hay không.
Mô tả
Object.is() xác định xem hai giá trị có phải là cùng một giá trị hay không. Hai giá trị là như nhau nếu một trong các điều kiện sau đúng:
- cả hai đều là
undefined - cả hai đều là
null - cả hai đều là
truehoặc cả hai đều làfalse - cả hai đều là chuỗi có cùng độ dài với cùng ký tự theo cùng thứ tự
- cả hai đều là cùng đối tượng (nghĩa là cả hai giá trị tham chiếu đến cùng đối tượng trong bộ nhớ)
- cả hai đều là BigInt với cùng giá trị số
- cả hai đều là symbol tham chiếu đến cùng giá trị symbol
- cả hai đều là số và
Object.is() không tương đương với toán tử ==. Toán tử == áp dụng các ép kiểu khác nhau cho cả hai phía (nếu chúng không cùng kiểu) trước khi kiểm tra bằng nhau (dẫn đến hành vi như "" == false là true), nhưng Object.is() không ép kiểu bất kỳ giá trị nào.
Object.is() cũng không tương đương với toán tử ===. Sự khác biệt duy nhất giữa Object.is() và === là trong cách xử lý zero có dấu và giá trị NaN. Toán tử === (và toán tử ==) coi hai số -0 và +0 là bằng nhau, nhưng coi NaN là không bằng nhau.
Ví dụ
>Sử dụng Object.is()
// Trường hợp 1: Kết quả giống với sử dụng ===
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
// Trường hợp 2: Zero có dấu
Object.is(0, -0); // false
Object.is(+0, -0); // false
Object.is(-0, -0); // true
// Trường hợp 3: NaN
Object.is(NaN, 0 / 0); // true
Object.is(NaN, Number.NaN); // true
Đặc tả
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-object.is> |