Maison >interface Web >js tutoriel >Pourquoi la déclaration de variable de la console JavaScript génère-t-elle « Non défini » ?
Pourquoi la déclaration de variable JavaScript dans la console aboutit à "Non défini"
Lors de la déclaration d'une variable dans la console JavaScript à l'aide de la syntaxe var a;, il imprime "indéfini". Ce comportement peut être surprenant et est souvent abordé dans les publications de Stack Overflow. Cependant, ces discussions ne parviennent pas à expliquer pleinement pourquoi cela se produit.
Le comportement de la console est le résultat direct de la façon dont JavaScript évalue les expressions. Lors de l'évaluation de l'instruction var a;, JavaScript la considère comme une expression à part entière et renvoie son résultat, qui est en effet « non défini ».
Il est plus curieux de savoir pourquoi la console affiche également « non défini » lors de la déclaration d'une variable. avec une valeur initiale, telle que var a = 3. Étonnamment, toutes les instructions de déclaration de variable en JavaScript (var et fonction) renvoient « non défini » s'il existe une autre instruction avec un résultat « réel ».
Par exemple :
> var a = 3; undefined > var a = 3; a = 4; 4 > var a = 3; a = 4; var a = 5; function f() {}; 4
Ce comportement est enraciné dans l'instruction eval, qui, selon la spécification ECMAScript :
L'évaluation de l'instruction var a = 4 renvoie (normal, vide, vide), qui satisfait aux critères de retour de "indéfini".
Cependant, l'évaluation précise également que si la valeur d'achèvement du programme évalué n'est pas vide, alors la valeur de la dernière instruction est renvoyée. Dans le dernier exemple, a = 4 est la dernière instruction, donc sa valeur (4) est renvoyée.
En résumé, la console JavaScript affiche « non défini » pour les déclarations de variables, car ces déclarations renvoient « non défini » lorsqu'elles sont évaluées comme expressions. Ce comportement peut prêter à confusion, en particulier lors de l'attribution de valeurs initiales à des variables, mais il découle des mécanismes d'évaluation sous-jacents des expressions et instructions JavaScript.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!