variable true ejemplo booleana javascript boolean

true - Declarar un booleano en JavaScript usando solo var



var true javascript (8)

Como dice este tutorial muy útil :

var age = 0; // bad var hasAge = new Boolean(age); // good var hasAge = Boolean(age); // good var hasAge = !!age;

Si declaro una variable booleana de JavaScript como esta:

var IsLoggedIn;

Y luego lo inicializa con true o 1 , ¿es seguro? ¿O la inicialización con 1 hace que la variable sea un número?


La variable se convertirá en lo que escribas siempre que la asignes. Inicialmente no está undefined . Si lo asigna ''true'' se convertirá en una cadena, si lo asigna true se convertirá en un booleano, si lo asigna 1 se convertirá en un número. Las asignaciones posteriores pueden cambiar el tipo de la variable más tarde.


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 y false son "falsos".

Sin embargo, hay un tipo booleano, como lo son los literales true y false .


Los tipos dependen de su inicialización:

var IsLoggedIn1 = "true"; //string var IsLoggedIn2 = 1; //integer var IsLoggedIn3 = true; //bool

Pero eche un vistazo a este ejemplo:

var IsLoggedIn1 = "true"; //string IsLoggedIn1 = true; //now your variable is a boolean

El tipo de sus variables depende del valor asignado en JavaScript.


No, no es seguro. Luego puedes hacer var IsLoggedIn = "Foo"; y JavaScript no arrojará un error.

Es posible hacer

var IsLoggedIn = new Boolean(false); var IsLoggedIn = new Boolean(true);

También puede pasar la variable no booleana al new Boolean() y hará IsLoggedIn boolean.

var IsLoggedIn = new Boolean(0); // false var IsLoggedIn = new Boolean(NaN); // false var IsLoggedIn = new Boolean("Foo"); // true var IsLoggedIn = new Boolean(1); // true


Puede usar y probar variables no inicializadas al menos para su "definición". Me gusta esto:

var iAmNotDefined; alert(!iAmNotDefined); //true //or alert(!!iAmNotDefined); //false

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 ''verdad'' o '' falsy ''Creo). En ese caso, asignar verdadera o 1 o ''1'' a la variable unitaria siempre devuelve verdadero cuando se le pregunta. De lo contrario [si necesita una comparación segura] use ''==='' para comparar.

var thisMayBeTrue; thisMayBeTrue = 1; alert(thisMayBeTrue == true); //=> true alert(!!thisMayBeTrue); //=> true alert(thisMayBeTrue === true); //=> false thisMayBeTrue = ''1''; alert(thisMayBeTrue == true); //=> true alert(!!thisMayBeTrue); //=> true alert(thisMayBeTrue === true); //=> false // so, in this case, using == or !! ''1'' is implicitly // converted to 1 and 1 is implicitly converted to true) thisMayBeTrue = true; alert(thisMayBeTrue == true); //=> true alert(!!thisMayBeTrue); //=> true alert(thisMayBeTrue === true); //=> true thisMayBeTrue = ''true''; alert(thisMayBeTrue == true); //=> false alert(!!thisMayBeTrue); //=> true alert(thisMayBeTrue === true); //=> false // so, here''s no implicit conversion of the string ''true'' // it''s also a demonstration of the fact that the // ! or !! operator tests the ''definedness'' of a variable.

PD: aunque no se puede probar la "definición" de variables inexistentes. Asi que:

alert(!!HelloWorld);

da un error de referencia (''HelloWorld no está definido'')

(¿Hay una palabra mejor para ''definición''? Perdonen mi holandés de todos modos; ~)


Qué tal algo como esto:

var MyNamespace = { convertToBoolean: function (value) { //VALIDATE INPUT if (typeof value === ''undefined'' || value === null) return false; //DETERMINE BOOLEAN VALUE FROM STRING if (typeof value === ''string'') { switch (value.toLowerCase()) { case ''true'': case ''yes'': case ''1'': return true; case ''false'': case ''no'': case ''0'': return false; } } //RETURN DEFAULT HANDLER return Boolean(value); } };

Entonces puedes usarlo así:

MyNamespace.convertToBoolean(''true'') //true MyNamespace.convertToBoolean(''no'') //false MyNamespace.convertToBoolean(''1'') //true MyNamespace.convertToBoolean(0) //false

No lo he probado para el rendimiento, pero la conversión de tipo a tipo no debería ocurrir con demasiada frecuencia; de lo contrario, ¡abriría su aplicación a la inestabilidad a lo grande!


Si desea que IsLoggedIn se trate como un booleano, debe inicializarlo de la siguiente manera:

var IsLoggedIn=true;

Si lo inicializa con var IsLoggedIn=1; entonces será tratado como un número entero.

Sin embargo, en cualquier momento, la variable IsLoggedIn podría referirse a un tipo de datos diferente:

IsLoggedIn="Hello World";

Esto no causará un error.