2011-09-30 11 views
25

¿Por qué es verdadero 0 == "" en JavaScript? He encontrado un similar post here, pero ¿por qué el número 0 es una cadena vacía? Por supuesto, 0 === "" es falso.¿Por qué 0 == "" verdadero en JavaScript

+0

¿Quiere decir 0 El "fundido" en falso "" es fundido en falso y el cheque es falso == false => true –

+0

Para PHP, consulte http: // php. net/manual/es/types.comparisons.php – apscience

+0

Creo que es porque Javascript coacciona automágicamente cadenas y números en algunos contextos, el operador == es uno de esos contextos, y "" coacciona a 0. – millimoose

Respuesta

46
0 == '' 

El operando de la izquierda es del tipo Número.
El operando derecho es del tipo String.

En este caso, el operando de la derecha es obligado al número de tipo:

0 == Number('') 

que resulta en

0 == 0 

Desde el Abstract Igualdad Comparación Algoritmo (número 4) :

Si Type (x) es Number y Type (y) is String, devuelva el resultado de la comparación x == ToNumber (y).

Fuente: http://es5.github.com/#x11.9.3

+0

Gracias, lo esperé al revés, el 0 convertido a cadena y luego falso. –

+0

Sí, por otro lado, esto significa que decir que ambos son falsos, como en las otras respuestas, no es del todo correcto. Porque, como bien lo has demostrado, la razón es que "" => 0. ¡Gracias por tu apoyo! –

+1

@ Horst - sí, eso es correcto. Ambos son falsos, como puede ver si los usa solos en 'if (0)' o 'if (" ")', pero en el caso de una comparación '==' eso no es lo que está sucediendo. (No estoy seguro de por qué Šime también dejó un comentario anterior diciendo "Porque ambos valores son falsos".) – nnnnnn

Cuestiones relacionadas