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 July 2015.

Object.is() は静的メソッドで、 2 つの値が同一値であるかどうかを判定します。

試してみましょう

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

構文

js
Object.is(value1, value2)

引数

value1

比較する 1 つ目の値。

value2

比較する 2 つ目の値。

返値

論理値で、 2 つの引数が同一値であるかどうかを表します。

解説

Object.is() は 2 つの値が同一値であるかどうかを判定します。2 つの値が以下の規則の一つに当てはまる場合に同一となります。

  • どちらも undefined

  • どちらも null

  • どちらも true かどちらも false

  • どちらも同じ文字群が同じ順で並ぶ同じ長さの文字列

  • どちらも同じオブジェクト(すなわち両方の値がメモリー内の同じオブジェクトを参照)

  • どちらも同じ数値の長整数

  • どちらも同じシンボル値のシンボル

  • どちらも数で、

    • どちらも +0
    • どちらも -0
    • どちらも NaN
    • あるいはどちらもゼロ以外で NaN でなく、同じ数値を持つ

Object.is()== 演算子と等価ではありません。== 演算子は等価性比較の前に(同じ型でなければ)両辺に対して様々な型変換を適用します(結果、例えば "" == falsetrue と評価されます)が、Object.is() は両辺どちらの値にも型変換を行いません。

また、Object.is()=== 演算子とも同じでもありませんObject.is()=== の唯一の違いは、符号付きのゼロと NaN の扱です。=== 演算子は(そして == 演算子も)数値 -0+0 は同じものとして扱う一方、NaN は異なるものとして扱います。

Object.is() の使用

js
// ケース 1: === を用いるのと同じ結果になる評価式
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

// ケース 2: 符号付きのゼロ
Object.is(0, -0); // false
Object.is(+0, -0); // false
Object.is(-0, -0); // true

// ケース 3: NaN
Object.is(NaN, 0 / 0); // true
Object.is(NaN, Number.NaN); // true

仕様書

Specification
ECMAScript® 2025 Language Specification
# sec-object.is

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
is

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報