JavaScript tiene dos formas de determinar si los dos valores son iguales.
Símbolo igual
El símbolo de igualdad consta de dos signos iguales: ==
JavaScript es un lenguaje de tipo débil. Esto significa que los signos iguales lanzarán el tipo para comparar dos valores.
La copia del código es la siguiente:
"" == "0" // falso
0 == "" // Verdadero
0 == "0" // Verdadero
falso == "falso" // falso
falso == "0" // Verdadero
falso == indefinido // falso
falso == null // falso
nulo == Undefinado // Verdadero
"/t/r/n" == 0 // verdadero
El código anterior muestra el resultado de la conversión de tipo, por lo que sabemos que usar el signo igual == es un mal hábito de programación. Debido al mecanismo de conversión de tipo complejo en JavaScript, los errores resultantes serán difíciles de rastrear.
Además, el lanzamiento de tipos también puede tener un cierto impacto en el rendimiento, por ejemplo, cuando se compara una cadena con un número, se lanzará a un número.
Símbolo de igualdad estricto
El símbolo de igualdad estricto consta de tres signos iguales: ===
Es similar al funcionamiento de símbolos iguales, pero los símbolos estrictamente iguales no realizarán operaciones de reparto.
La copia del código es la siguiente:
"" === "0" // falso
0 === "" // Falso
0 === "0" // falso
falso === "falso" // falso
falso === "0" // falso
falso === indefinido // falso
falso === nulo // falso
nulo === Undefined // falso
"/t/r/n" === 0 // falso
El código anterior deja el código más claro. Si los dos valores tienen diferentes tipos, devolverán directamente False, lo que también mejorará el rendimiento.
Objeto de comparación
Aunque == y === se llaman signos iguales, el rendimiento será muy diferente cuando uno de los dos valores comparados es un objeto.
La copia del código es la siguiente:
{} === {}; // FALSO
nueva cadena ('foo') === 'foo'; // FALSO
nuevo número (10) === 10; // FALSO
var foo = {};
foo === foo; // verdadero
Aquí, ya no es solo para comparar si los dos valores son iguales, determinará si los dos valores se refieren a la misma instancia de objeto, que se comporta más como un puntero en C.
Resumir
Se recomienda encarecidamente aquí usar solo símbolos de igualdad estrictos ===. Si necesitamos hacer una conversión de tipo, podemos hacer una conversión de tipo explícita antes de la comparación, en lugar de confiar en el método de fundición complejo de JavaScript.