2009-12-22 17 views
22

duplicados posibles:!!
Javascript === vs == : Does it matter which “equal” operator I use?
Javascript operator !==JavaScript es = igual que ==

Mira this commit

Es != mismo que !== en JavaScript?

[1]:

+9

Ver http://stackoverflow.com/questions/359494/javascript-vs – Pool

+3

-1: ¿Google se rompió? Una búsqueda de "operadores de comparación de Javascript" arrojó docenas de explicaciones de la diferencia. ¿Qué pasaba con eso? ¿Qué más necesitas saber? –

+5

@ S.Lott: Necesitaba haber sabido que se les llamaba "operadores de comparación de Javascript" por una cosa, lo que no implica que lo haga (para ser justo con el póster original). – Amadiere

Respuesta

54

Sutilmente no son lo mismo.

!= comprueba el valor
!== comprueba el valor y el tipo

'1' != 1 // false (these two are the same) 
'1' !== 1 // true (these two are **not** the same). 

En el ejemplo anterior. La primera mitad de la expresión es una cadena, la segunda mitad es un número entero.

+1

Spiffing answer old chap – Andrew

5

No, no es el mismo. Ver por ejemplo here.

4 !== '4' returns true (and 4 === '4' returns false) 
4 != '4' returns false (and 4 == '4' returns true) 
+1

Y para el flaco completo, no hay nada como la especificación. Puede descargar la última desde aquí: http://www.ecma-international.org/publications/files/drafts/ Es el archivo PDF que comienza con "tc39-" (al momento de escribir este artículo, tc39-2009-050.pdf) . Eso dice que es un borrador, pero fue votado a principios de este mes. –

+1

Y vea http://stackoverflow.com/questions/359494/javascript-vs-does-it-matter-which-equal-operator-i-use/1813267#1813267 cómo leer las especificaciones! – nalply

+0

Hehe, el hecho de que necesita un manual para leer una especificación realmente dice algo acerca de la calidad de la especificación misma :) – Fortega

0

Comprueba no solo el valor sino también el tipo de cosas que se comparan. Esto también es lo mismo en php y en algunos otros idiomas también.

8

De

http://en.wikipedia.org/wiki/JavaScript_syntax#Operators

! == No es idéntica

! = No igual

Y "idénticas es igual y del mismo tipo."

De

http://docstore.mik.ua/orelly/webprog/jscript/ch05_04.htm

"en JavaScript, números, cadenas y valores booleanos se comparan por valor. ... Por otro lado, los objetos, matrices y funciones se comparan por referencia . "

-

Así que en resumen son lo mismo? No, porque hay una prueba adicional con! == (over! =) Para tipo sameness así como equidad.

4

¡La gran diferencia es que! = Realiza una coerción de tipo. Es decir, un valor se emite efectivamente al otro antes de que se verifique la igualdad. Esta es la razón por la cual, como en la respuesta de Amadiere:

'1' != 1 

evalúa como falsa. Lo mismo vale para == v. ===. En general, evite == y! = A menos que desee específicamente que se realice la coerción. Usa === y! == y busca exactamente el resultado que estás buscando.

0

Eche un vistazo a JSLint para una explicación de la diferencia. También te aconsejo que pases tu código JavaScript al menos una vez a través de JSLint, es posible que aprendas cosas valiosas ...

Cuestiones relacionadas