El método Object.is()
en ECMAScript 6 (ES6) es una operación de comparación que verifica si dos valores son el mismo valor. Esto puede parecer inicialmente similar al operador de igualdad estricta (===
), pero Object.is()
tiene algunas diferencias sutiles pero cruciales.
console.log(Object.is(42, 42)); // true
console.log(Object.is('foo', 'foo')); // true
console.log(Object.is(false, false)); // true
console.log(Object.is(null, null)); // true
console.log(Object.is(undefined, undefined)); // true
console.log(Object.is(NaN, NaN)); // true
Como vemos en los ejemplos anteriores, Object.is()
devuelve true
cuando los dos valores son exactamente los mismos. Incluso considera NaN
igual a NaN
, que es un comportamiento inusual, ya que el operador ===
no considera que NaN
sea igual a NaN
.
console.log(NaN === NaN); // false
console.log(Object.is(NaN, NaN)); // true
Otro punto donde Object.is()
difiere del operador ===
es la comparación de +0
y -0
. En JavaScript, +0
y -0
son considerados iguales por el operador ===
, pero Object.is()
considera estos dos valores como diferentes.
console.log(+0 === -0); // true
console.log(Object.is(+0, -0)); // false
Object.is()
resulta ser útil en situaciones donde necesitamos una comparación de valores muy precisa que se encarga de estos casos especiales. Aunque menos comúnmente usado que el operador ===
, Object.is()
puede ser una herramienta valiosa en el arsenal cuando se trabaja con JavaScript y la congruencia exacta es necesaria.