2010-10-07 7 views
6

Lorsque j'exécute "var variable = true;" dans la console chrome je reçois "undefined" a retourné:"var variable" renvoie undefined?

> var variable = true; 
undefined 

Mais quand je lance sans "var" il retourne vrai:

> variable = true; 
true 

Pourquoi est-il returning "non défini" avec "var"?

Il est source de confusion parce que je m'attendais à ce qu'il revienne vrai.

Répondre

5

La première est une instruction, tandis que la seconde est une expression. Bien que pas tout à fait la même chose, il est similaire aux règles de C: (?)

// A statement that has no value. 
int x = 5; 

// An expression... 
x = 10; 

// ...that can be passed around. 
printf("%d\n", x = 15); 
+0

Est-ce que le code js est valide pour utiliser "var variable = true;" ou devrais-je exécuter "var variable; variable = true;"? –

+0

@ajsie - c'est valide, et les deux instructions sont équivalentes. – Oded

+0

Oui, c'est un code valide. Vous pouvez le confirmer en évaluant 'variable' après l'exécution de l'instruction. –

1

un rendez-vous retourne la valeur du rendez-vous, mais avec var ce retour est « consommé »

2

var x = y; est une déclaration qui ne renvoie aucune valeur. Dans la console WebKit JS, une instruction qui ne renvoie aucune valeur affiche undefined comme résultat, par ex.

> if(1){} 
undefined 
> ; 
undefined 
> if(1){4} // this statement returns values! 
4 

L'affectation est une expression qui retourne la valeur de la LHS. Cela signifie que cette instruction d'expression a une valeur de retour, et cela sera affiché.