Dans ES6 (la version 2015 de JavaScript), Object.is()
est une fonction utilisée pour vérifier si deux valeurs sont exactement les mêmes. Cette méthode compare deux valeurs et retourne un booléen true
si les valeurs sont identiques sans faire de conversion implicite, c'est-à-dire qu'elles doivent être de même type et avoir la même valeur. En comparaison, l'opérateur de comparaison ==
effectue une conversion des types avant la comparaison, et ===
effectue une comparaison strictement égale sans conversion des types, mais avec des exceptions.
Voici un exemple d'utilisation de Object.is()
:
let val1 = 5;
let val2 = "5";
let val3 = 5;
console.log(Object.is(val1, val2)); //Affiche false
console.log(Object.is(val1, val3)); //Affiche true
Dans le code ci-dessus, la méthode Object.is()
est utilisée pour comparer val1
et val2
et val1
et val3
. La première comparaison renvoie false
parce que val1
est un nombre et val2
est une chaîne, donc ils sont de types différents. La deuxième comparaison renvoie true
parce que val1
et val3
sont tous les deux des nombres avec la même valeur.
Object.is()
a aussi une particularité lorsqu'il s'agit de comparer NaN (Not a Number) et les valeurs négatives zéro. Alors que ===
ne peut pas distinguer NaN de NaN, ni -0 de +0, la fonction Object.is()
est capable de le faire :
console.log(Object.is(NaN, NaN)); //Affiche true
console.log(Object.is(-0, +0)); //Affiche false
Dans ce code, Object.is()
peut identifier correctement que NaN est équivalent à NaN et que -0 n'est pas égal à +0.
Donc, pour une comparaison exacte entre deux valeurs, Object.is()
est préférable aux opérateurs ==
et ===
.