2012-08-08 7 views
8

Duplicar posible:
JavaScript === vs == : Does it matter which “equal” operator I use?¿Es necesario usar === para comparar cadenas en Javascript o es == suficiente?

puedo entender por qué === es necesario cuando se comparan los números, booleanos, cadenas vacías, etc., debido a las conversiones de tipos inesperados, por ejemplo,

var foo = 1; 
var bar = true; 
// bar == foo => true 
// bar === foo => false 

Pero puede == vez introducir un error cuando se compara una variable a un no vacío cadena literal? ¿Es más eficiente usar == sobre === en este caso?

+0

http://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/ – diEcho

+0

La igualdad de tipo debe ser igual o más rápida: http://stackoverflow.com/a/359509/453277 –

+0

operador de igualdad ('==='). Comprueba que los valores sean del mismo valor y del mismo tipo. Recuerda esto. – diEcho

Respuesta

7

Esto se ha preguntado aquí mucho, así que solo dejaré un póster mejor que yo mismo.

Echa un vistazo aquí: http://longgoldenears.blogspot.com/2007/09/triple-equals-in-javascript.html

Los 3 signos iguales significan "igualdad sin tipo de coacción". Usando el triple igual, los valores deben ser iguales en tipo también.

 
0==false // true 
0===false // false, because they are of a different type 
1=="1"  // true, auto type coercion 
1==="1" // false, because they are of a different type 

fuenteDifference between == and === in JavaScript

1

Bueno, en cierto modo respondí yo mismo ... 5 == "5", pero 5! == "5", lo que podría ser inesperado. Sin embargo, le doy crédito a cualquiera que tenga una idea más profunda.

+0

Esa es la respuesta ... – DerWaldschrat

4

Es una buena práctica para siempre utilizar los operadores de identidad (!== y ===) y realizar conversión de tipos manualmente sólo cuando es necesario (por ejemplo Boolean(someVar) o Number(someVar)).

A fun fiddle.

0

"==" realiza una conversión de tipo antes de realizar la comparación. Esa es la razón por la cual 5 == "5" es verdadero y no falso.

El "===" en cambio no hace esta conversión, por lo que 5 === "5" no es lo mismo siempre que el tipo no sea el mismo.

Cuestiones relacionadas