Si declaro una variable booleana de JavaScript como esta:
var IsLoggedIn;
Y luego inicializarlo con true
o 1
, ¿es seguro? ¿O inicializarlo con 1
hará que la variable sea un número?
javascript
boolean
mrblah
fuente
fuente
Respuestas:
Los tipos dependen de su inicialización:
Pero mire este ejemplo:
El tipo de sus variables depende del valor asignado en JavaScript.
fuente
No, no es seguro. Más tarde, podría hacer var
IsLoggedIn = "Foo";
y JavaScript no arrojará un error.Es posible hacer
También puede pasar la variable no booleana al
new Boolean()
y hará que IsLoggedIn sea booleano.fuente
if (new Boolean(false)) alert ('wat')
Ver stackoverflow.com/a/8695363(new Boolean(false)).toString()) === "false"
, gracias por el enlaceComo dice este tutorial muy útil :
fuente
Si desea
IsLoggedIn
ser tratado como un booleano, debe inicializar de la siguiente manera:Si lo inicializa con
var IsLoggedIn=1;
, se tratará como un número entero.Sin embargo, en cualquier momento, la variable
IsLoggedIn
podría referirse a un tipo de datos diferente:Esto no provocará ningún error.
fuente
Usted puede usar y probar las variables sin inicializar al menos por su 'definedness'. Me gusta esto:
Además, hay muchas posibilidades: si no está interesado en los tipos exactos, use el operador '==' (o! [Variable] / !! [variable]) para comparar (eso es lo que Douglas Crockford llama 'verdadero' o ' falso ', creo). En ese caso, asignar verdadero o 1 o '1' a la variable unitaria siempre devuelve verdadero cuando se le pregunta. De lo contrario, [si necesita una comparación segura de tipos] use '===' para comparar.
PD: sin embargo, no se puede probar la 'definición' para las variables inexistentes. Entonces:
da un error de referencia ('HelloWorld no está definido')
(¿Hay una palabra mejor para 'definición'? Perdón por mi holandés de todos modos; ~)
fuente
thisMayBeTrue = '';
; no obtendrá los mismos resultados ya que una cadena vacía es falsa. "PD: no se puede test 'definedness' para las variables no existentes aunque" - Claro que puedes:typeof HellowWorld === 'undefined'
.Las variables en Javascript no tienen un tipo. No cero, no nulo, no vacío y
true
son "verdaderos". Cero, nulo, indefinido, cadena vacía yfalse
son "falsos".Sin embargo, hay un tipo booleano, al igual que los literales
true
yfalse
.fuente
2 + 2
vs"2" + 2
. Consulte también eltypeof
operador .Qué tal algo como esto:
Entonces puedes usarlo así:
No he probado su rendimiento, pero la conversión de un tipo a otro no debería suceder con demasiada frecuencia, de lo contrario, ¡abrirás tu aplicación a la inestabilidad a lo grande!
fuente
La variable se convertirá en el tipo que le asigne. Inicialmente lo es
undefined
. Si lo asigna se'true'
convertirá en una cadena, si lo asigna setrue
convertirá en un booleano, si lo asigna se1
convertirá en un número. Las asignaciones posteriores pueden cambiar el tipo de la variable más adelante.fuente