Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Object : méthode statique is()

Baseline Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2015.

La méthode statique Object.is() détermine si deux valeurs sont les mêmes.

Exemple interactif

console.log(Object.is("1", 1));
// Résultat attendu : false

console.log(Object.is(NaN, NaN));
// Résultat attendu : true

console.log(Object.is(-0, 0));
// Résultat attendu : false

const obj = {};
console.log(Object.is(obj, {}));
// Résultat attendu : false

Syntaxe

js
Object.is(value1, value2)

Paramètres

valeur1

La première valeur à comparer.

valeur2

La seconde valeur à comparer.

Valeur de retour

Un booléen indiquant si les arguments ont la même valeur.

Description

Object.is() détermine si deux valeurs sont les mêmes. Deux valeurs sont considérées comme les mêmes si l'une des conditions suivantes est remplie :

  • elles sont toutes les deux undefined
  • elles sont toutes les deux null
  • elles sont toutes les deux true ou toutes les deux false
  • elles sont des chaînes de caractères de la même longueur et avec les mêmes caractères (dans le même ordre)
  • elles sont toutes les deux le même objet (ce qui signifie que les deux valeurs font référence au même objet en mémoire)
  • elles sont toutes les deux des grands entiers avec la même valeur numérique
  • elles sont toutes les deux des symboles qui font référence à la même valeur symbolique
  • elles sont des nombres et
    • sont toutes les deux égales à +0
    • sont toutes les deux égales à -0
    • sont toutes les deux égales à NaN
    • sont non-nulles, ne sont pas NaN et ont toutes les deux la même valeur

Object.is() n'est pas équivalent à l'opérateur ==. L'opérateur == applique diverses conversions aux deux côtés (si elles ne sont pas du même type) avant de tester l'égalité (ce qui entraîne un comportement tel que "" == false donnant true), mais Object.is() ne convertit aucune des deux valeurs.

Object.is() n'est également pas équivalent à l'opérateur ===. La seule différence entre Object.is() et === réside dans leur traitement des zéros signés et des valeurs NaN. L'opérateur === (et l'opérateur ==) considère que les valeurs numériques -0 et +0 sont égales, mais considère que NaN n'est pas égal à lui-même.

Exemples

Utiliser Object.is()

js
// Cas 1 : Évaluer si le résultat est le même en utilisant ===
Object.is(25, 25); // true
Object.is("toto", "toto"); // true
Object.is("toto", "truc"); // false
Object.is(null, null); // true
Object.is(undefined, undefined); // true
Object.is(window, window); // true
Object.is([], []); // false
const toto = { a: 1 };
const truc = { a: 1 };
const memeToto = toto;
Object.is(toto, toto); // true
Object.is(toto, truc); // false
Object.is(toto, memeToto); // true

// Cas 2 : Zéro signé
Object.is(0, -0); // false
Object.is(+0, -0); // false
Object.is(-0, -0); // true

// Cas 3 : NaN
Object.is(NaN, 0 / 0); // true
Object.is(NaN, Number.NaN); // true

Spécifications

Spécification
ECMAScript® 2027 Language Specification
# sec-object.is

Compatibilité des navigateurs

Voir aussi