tag page attribute javascript equality weak-typing identity-operator

javascript - page - title css



¿Cuándo tendría JavaScript== más sentido que===? (4)

Como ¿Qué operador igual (== vs ===) se debe usar en las comparaciones de JavaScript? indica que son básicamente idénticos, excepto que '' === '' también garantiza la igualdad de tipos y, por lo tanto, '' == '' podría realizar la conversión de tipos. En el JavaScript de Douglas Crockford : The Good Parts , se recomienda evitar siempre '' == ''. Sin embargo, me pregunto cuál fue la idea original de diseñar dos conjuntos de operadores de igualdad.

¿Has visto alguna situación en la que usar '' == '' en realidad sea más adecuado que usar '' === ''?


== compara si el valor de los 2 lados es el mismo o no.

=== compara si el valor y el tipo de datos de los 2 lados son iguales o no.

Digamos que tenemos

$var = 0; if($var == false){ // true because 0 is also read as false } if(!$var){ // true because 0 is also read as false } if($var === false){ // false because 0 is not the same datatype as false. (int vs bool) } if($var !== false){ // true becuase 0 is not the same datatype as false. (int vs bool) } if($var === 0){ // true, the value and datatype are the same. }

puede consultar http://www.jonlee.ca/the-triple-equals-in-php/


Considera una situación cuando comparas números o cadenas:

if (4 === 4) { // true }

pero

if (4 == "4") { // true }

y

if (4 === "4") { // false }

Esto se aplica a los objetos, así como matrices.

Por lo tanto, en los casos anteriores, tiene que tomar una decisión sensata si usar == o ===


La respuesta simple es que ''=='' tiene más sentido que ''==='' cuando quiere que ocurra una coacción de tipo durante las comparaciones.

Un buen ejemplo sería pasar números en una cadena de consulta de URL. Si, por ejemplo, tiene contenido paginado y el parámetro de consulta de la page contiene el número de la página actual, puede verificar la página actual con if (page == 1) ... aunque la page sea ​​realmente "1" , no 1 .


Yo sugeriría que no hay ningún problema con el uso de == , pero entender cuándo y por qué usarlo (es decir, usar === como regla y == cuando tiene un propósito). Esencialmente, == solo te da una notación abreviada, en lugar de hacer algo como

if (vble === 0 || vble === "" || vble === null || vble === undefined || vble === false) ...

Es mucho más fácil simplemente escribir

if (vble == false) ...

(O incluso más fácil de escribir)

si (! vble) ...

Por supuesto, hay más ejemplos que solo buscar valores "de verdad" o "falsey".

Realmente, solo necesitas entender cuándo y por qué usar == y === , no veo ninguna razón por la que no debo usar == donde encaja mejor ...

Otro ejemplo es usar esta abreviatura para permitir llamadas a métodos abreviados:

function func(boolOptionNotCommonlyUsed) { if (boolOptionNotCommonlyUsed) { //equiv to boolOptionNotCommonlyUsed == true //do something we rarely do } //do whatever func usually does } func(); //we rarely use boolOptionNotCommonlyUsed, so allow calling without "false" as an arg