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
Object.is(value1, value2)
Paramètres
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
trueou toutes les deuxfalse - 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
NaNet ont toutes les deux la même valeur
- sont toutes les deux égales à
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()
// 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> |