2012-07-10 9 views
5

veo en algunos códigos JavaScript que la gente escribe algo como esto:Javascript VERDADERO y "verdadero" ¿por qué alguien usa cadena en lugar de booleano?

var myVar = "true"; 

//... 

if(myVar == "true") { 
    //... 
}else{ 
    //... 
} 

¿Por qué la gente no utiliza VERDADERO o FALSO? Hasta donde sé, el tipo booleano es obvio para los navegadores.

O simplemente es un código deficiente ... y trata de nunca escribir de esta manera.

+3

Advertencia: 'true! = 'True'' –

+1

Eso es' verdadero' y 'falso' en realidad (minúsculas), pero su análisis es el correcto: mejor use booleanos reales en lugar de cadenas. –

+1

Y 'var myVar =" false "; if (myVar) alert ("O, hai!") 'también te mostrará alerta. –

Respuesta

5

Es solo un código deficiente. Intenta nunca escribir de esta manera.

Este tipo de código es simplemente horrible para el mantenimiento. Tanto el == (en lugar de ===) como el true como cadena.

PD: además, "true" == true // false. Para el argumento ===, es simplemente porque true == 1 // true y muchos otros se parecen a esto.

4

No debe hacer esto, a menos que realmente espere una cadena que contiene true por alguna razón :). Pero incluso en ese caso, usar strict equality (===) sería la elección correcta.

En el ejemplo de código que está mostrando, esta es simplemente una manera terrible de escribir código.

+2

En ese caso, debe usar estricta igualdad para dejarlo en claro a cualquiera que lea el código. –

+0

@Matt Gracias, tienes razón. – kapa

1

Es un código pobre, como dices.

Un desarrollador "real" nunca escribe if (condition == true), pero sólo if (condition)

también se podría escribir if (true == condition). Esto se llama estilo Yoda y está diseñado para evitar la asignación no deseada de variables si escribe erróneamente = en lugar de ==.

+3

Si habla de desarrolladores "reales", mencionar '===' valdría la pena al probar 'true' :). – kapa

+1

De acuerdo. Especialmente hago esto en PHP cuando pruebo fallas. – Cyrille

Cuestiones relacionadas