Igualdad y coerción en JavaScript
=== compara sin convertir; == convierte primero, y sorprende.
const comparisons = [
["'1' == 1", "1" == 1],
["'1' === 1", "1" === 1],
["null == undefined", null == undefined],
["null === undefined", null === undefined],
["[] == false", [] == false],
["NaN === NaN", NaN === NaN],
["Object.is(NaN, NaN)", Object.is(NaN, NaN)],
["Object.is(0, -0)", Object.is(0, -0)],
];
for (const [expression, result] of comparisons) {
console.log(`${expression.padEnd(22)} ${result}`);
}
Cómo funciona
- Siempre
===, salvo que quieras la coerción a propósito. null == undefinedes true, y ese es el único caso útil.Object.isdifiere de===con NaN y el cero negativo.
Palabras clave y builtins usados aquí
Objectconstforof
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 410
- Tokens
- 114
- Ritmo de tres estrellas
- 80 tpm
Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 86 segundos.
Paso 3 de 5 en Vinculaciones y valores; paso 3 de 43 en Fundamentos del lenguaje.