Si je déclare une variable booléenne JavaScript comme celle-ci:
var IsLoggedIn;
Et puis initialisez-le avec true
ou 1
, est-ce sûr? Ou est-ce que l'initialiser avec 1
fera de la variable un nombre?
javascript
boolean
mrblah
la source
la source
Réponses:
Les types dépendent de votre initialisation:
Mais jetez un œil à cet exemple:
Le type de vos variables dépend de la valeur attribuée dans JavaScript.
la source
Non, ce n'est pas sûr. Vous pourrez plus tard faire var
IsLoggedIn = "Foo";
et JavaScript ne générera pas d'erreur.Il est possible de faire
Vous pouvez également passer la variable non booléenne dans le
new Boolean()
et cela rendra IsLoggedIn booléen.la source
if (new Boolean(false)) alert ('wat')
Voir stackoverflow.com/a/8695363(new Boolean(false)).toString()) === "false"
, merci pour le lienComme le dit ce tutoriel très utile :
la source
Si vous voulez
IsLoggedIn
être traité comme un booléen, vous devez initialiser comme suit:Si vous l'initialisez avec,
var IsLoggedIn=1;
il sera traité comme un entier.Cependant, à tout moment, la variable
IsLoggedIn
peut faire référence à un type de données différent:Cela ne provoquera pas d'erreur.
la source
Vous pouvez utiliser et tester des variables non initialisées au moins pour leur «définition». Comme ça:
De plus, il existe de nombreuses possibilités: si vous n'êtes pas intéressé par les types exacts, utilisez l'opérateur '==' (ou! [Variable] / !! [variable]) pour la comparaison (c'est ce que Douglas Crockford appelle 'vérité' ou ' faux 'je pense). Dans ce cas, l'affectation de true ou 1 ou '1' à la variable unifiée retourne toujours true quand on lui demande. Sinon [si vous avez besoin d'une comparaison sûre de type], utilisez '===' pour la comparaison.
PS: vous ne pouvez pas tester la «définition» pour des variables non existantes. Alors:
donne une erreur de référence ('HelloWorld n'est pas défini')
(Y a-t-il un meilleur mot pour `` définition ''? Pardonnez-moi quand même mon néerlandais; ~)
la source
thisMayBeTrue = '';
- vous n'obtiendrez pas les mêmes résultats car une chaîne vide est fausse. « PS: vous ne pouvez pas test « définition des modèles » pour les variables non existantes si » - Bien sûr , vous pouvez:typeof HellowWorld === 'undefined'
.Les variables en Javascript n'ont pas de type. Non nul, non nul, non vide et
true
sont "vrais". Zéro, nul, indéfini, chaîne vide etfalse
sont "faux".Il existe cependant un type booléen, tout comme les littéraux
true
etfalse
.la source
2 + 2
vs"2" + 2
. Voir aussi l'typeof
opérateur .Que diriez-vous quelque chose comme ça:
Ensuite, vous pouvez l'utiliser comme ceci:
Je ne l'ai pas testé pour les performances, mais la conversion de type en type ne devrait pas se produire trop souvent, sinon vous ouvrez votre application à une grande instabilité!
la source
La variable deviendra le type que vous lui attribuez. Au départ, ça l'est
undefined
. Si vous l'assignez,'true'
il deviendra une chaîne, si vous l'assignez,true
il deviendra un booléen, si vous l'assignez,1
il deviendra un nombre. Les affectations ultérieures peuvent changer le type de la variable ultérieurement.la source