2013-08-26 1 views
-2

Je commence tout juste à apprendre JS. Je comprends les variables de définition. Pourquoi laisser un non déclaré? Cela aide-t-il lors de la construction des instructions if/then?pourquoi laisser une variable non déclarée en javascript?

+1

Cela peut être un doublon: http://stackoverflow.com/questions/15985875/effect-of-declared-and-undeclared-variables – dbarnes

Répondre

1

oui il peut "aider lors de la construction des instructions if/then?" la valeur de undefined est false. si:

if (myVar) 

signifie que si sa a obtenu une valeur vraie, sinon faux

mais de son mieux pour faire:

var myVar; 

qui est encore faux ne déclarant peut donner une erreur dans un navigateur plus ancien Je ne suis pas sûr que ça arrive si vous avez déjà un "var i" global et puis essayez d'en utiliser un en boucle, je pense que ça va juste vous faire perdre le "je" global pour le nouveau.

+0

'la valeur de undefined est faux'; _undefined_ est une falsification, mais 'undefined! == false' –

+0

@PaulS. vrai (lol) mais ça marchera toujours pour un "if (undeclaredVariable)" –

3

Pourquoi laisser un non déclaré?

function foo() { 
    var i = 0; // local variable 
    j = 1;  // global variable 
} 
foo(); 
i; // undefined 
j; // 1 
function bar() { 
    var k; // local variable 
    k = 2; // still local 
} 
bar(); 
k; // undefined 

Si foo est en mode "use strict", il provoquera une ReferenceError: j is not defined à moins qu'un autre j est défini plus haut dans la chaîne de portée, parce qu'il n'y avait pas var pour le j.

+0

autant que je sache que vous ne pouvez pas déclarer une variable globale ** à l'intérieur ** un fonction et "j = 1" (si ce n'est pas une erreur) sera une variable locale –

+0

@tryingToGetProgrammingStraight Si vous ne le croyez pas, essayez le code que j'ai posté ici, suivi d'une vérification pour voir s'il y a un 'j' global et un rapport: Je crois que le 'j;' en dehors de la fonction, comme dans mon exemple, est une preuve suffisante. –

+0

Il est vrai que 'j' ne deviendra pas nécessairement global s'il y a un' var j' plus haut dans la portée mais pas globalement, cependant. –

Questions connexes