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.

O método Object.is() determina se dois valores correspondem ao mesmo valor.

Sintaxe

Object.is(value1, value2);

Parâmetros

value1

O primeiro valor a ser comparado.

value2

O segundo valor a ser comparado.

Return value

Um Boolean indicando se os dois argumentos possuem o mesmo valor ou não.

Descrição

Object.is() determina se dois valores correspondem ao mesmo valor. Dois valores correspondem ao mesmo valor se uma das seguintes condições for verdadeira:

  • ambos são undefined

  • ambos são null

  • ambos são true ou ambos são false

  • ambos são strings do mesmo comprimento, com os mesmos caracteres

  • ambos são o mesmo objeto

  • ambos são numéricos e

    • ambos são +0
    • ambos são -0
    • ambos são NaN
    • ou ambos são não-zero e ambos são não NaN e ambos correspondem ao mesmo valor

Isso não é o mesmo que ser igual de acordo com o operador ==. O operador == aplica diversas coerções para ambos os lados (se eles não correspondem ao mesmo Tipo) antes de testar a igualdade (resultando em comportamentos como a comparação "" == false retornar true), enquanto Object.is não realiza a coerção de nenhum dos valores.

Isso também não é o mesmo que ser igual de acordo com o operador ===. O operador === (assim como o operador ==) trata os valores numéricos -0 e +0 como iguais e trata Number.NaN como não igual a NaN.

Exemplos

js
Object.is("foo", "foo"); // true
Object.is(window, window); // true

Object.is("foo", "bar"); // false
Object.is([], []); // false

var test = { a: 1 };
Object.is(test, test); // true

Object.is(null, null); // true

// Casos especiais
Object.is(0, -0); // false
Object.is(-0, -0); // true
Object.is(NaN, 0 / 0); // true

Polyfill para navegadores que não suportam ES6

Object.is() é uma adição proposta ao padrão ECMA-262; e como tal, pode não estar presente em todos os navegadores. Você pode contornar essa situação por meio da adição do seguinte código no começo de seus scripts. Isso permitirá a você utilizar Object.is(), mesmo quando não houver suporte por parte do navegador.

js
if (!Object.is) {
  Object.is = function (x, y) {
    // Algoritmo para verificar se os valores sao iguais
    if (x === y) {
      // Passos 1-5, 7-10
      // Passos 6.b-6.e: +0 != -0
      return x !== 0 || 1 / x === 1 / y;
    } else {
      // Passo 6.a: NaN == NaN
      return x !== x && y !== y;
    }
  };
}

Especificações

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

Compatibilidade com navegadores

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

Veja também