2011-05-17 9 views
9
undefined === null => false 
undefined == null => true 
  1. he pensado acerca de la razón de undefined == null y descubrió un solo caso:indefinido y nulo

    if(document.getElementById() == null) .... 
    

    ¿Hay alguna otra razón para hacer (undefined === null) == false

  2. Is? Hay otros ejemplos de uso === - operación en javascript?

Respuesta

11

¿Hay alguna otra razón para hacer (undefined === null) == false?

No son iguales, por lo que Strict Equality Comparison Algorithm los considera falsos.

¿Hay algún otro ejemplo de uso === - operación en javascript?

El === da el resultado más predecible. Solo uso == cuando tengo un propósito específico para la coerción de tipo. (Consulte Abstract Equality Comparison Algorithm.)

+0

Mismo tiempo. Impresionante – Raynos

+1

@Raynos: Sí, esperé unos segundos extra para que pudieras ponerte al día. ; o) – user113716

3

=== es estrictamente igual.

Indefinido y nulo no son lo mismo.

== usa tipo de coerción.

null y undefined coercen el uno al otro.

4

null y undefined son dos conceptos diferentes. undefined es la falta de valor (si define una variable con var sin inicializarla, no contiene null, pero undefined), mientras que con null la variable existe y se inicializa con el valor null, que es un tipo especial de valor .

El operador de igualdad de JavaScript está roto, sin embargo, Crockford descubrió que carece de transitividad y por esta razón sugiere utilizar siempre la estricta igualdad (===). Considera esta tabla publicada en Javascript las partes buenas:

'' == '0'   // false 
0 == ''   // true 
0 == '0'   // true 

false == 'false' // false 
false == '0'  // true 

false == undefined // false 
false == null  // false 
null == undefined // true 
+2

* "undefined es la falta de valor (probablemente la variable no exista)," * Eso no es del todo correcto. Con 'undefined', la variable existe, pero se le ha asignado (o reasignado) su valor predeterminado' undefined'. Si intentas comparar con una variable que no existe, obtienes un 'ReferenceError'. – user113716

+1

@patrick Tienes razón. He arreglado la respuesta. Gracias. – stivlo

3

Type coercion (usando el operador ==) puede conducir a resultados no deseados o inesperados. Después de seguir todas las conversaciones que pude encontrar de Douglas Crockford en la red (sobre todo video de Yahoo) me acostumbré a usar === todo el tiempo. Dado mi uso predeterminado del operador de igualdad estricta, estaría más interesado en los casos de uso de javascript de coerción de tipo; ~) hoy en día.

Cuestiones relacionadas