[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/is [Back]  [Original]

Object.is() - JavaScript | MDN

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.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 mthode Object.is() permet de dterminer si deux valeurs sont les mmes.

Dans cet article

Syntaxe

js
Object.is(value1, value2);

Paramtres

valeur1

La premire valeur comparer.

valeur2

La seconde valeur comparer.

Valeur de retour

Un boolen indiquant si les arguments ont la mme valeur.

Description

Object.is() permet de dterminer si deux valeurs sont identiques. Deux valeurs sont considres identiques si :

  • 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 chanes de caractres de la mme longueur et avec les mmes caractres (dans le mme ordre)
  • elles sont toutes les deux le mme objet
  • 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 mme valeur

Attention, ce n'est pas la mme galit qu'avec l'oprateur ==. L'oprateur == applique diffrentes conversions chaque oprande (si ils ne sont pas du mme type) avant de tester l'galit (d'o le comportement "" == false qui donne true), Object.is ne convertit aucune des deux valeurs.

Cette galit est galement diffrente de l'galit stricte qu'on peut avoir avec l'oprateur ===. L'oprateur === (et galement l'oprateur ==) considre que -0 et +0 sont gales et que Number.NaN n'est pas gal NaN.

Exemples

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

Object.is("toto", "truc"); // false
Object.is([], []); // false

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

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

// Cas aux limites (cas spciaux)
Object.is(0, -0); // false
Object.is(-0, -0); // true
Object.is(NaN, 0 / 0); // true

Prothse d'mulation (polyfill)

js
if (!Object.is) {
  Object.is = function (v1, v2) {
    // Algorithme SameValue
    if (v1 === v2) {
      //tapes 1-5, 7-10
      //tapes 6.b-6.b +0 !=-0
      return v1 !== 0 || 1 / v1 === 1 / v2;
    } else {
      //tapes 6.a: NaN == NaN
      return v1 !== v1 && v2 !== v2;
    }
  };
}

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-object.is

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page