Par rapport à C / C ++, la boucle FOR dans ECMAScript ne peut pas créer de contexte local.
La copie de code est la suivante:
pour (var k dans {a: 1, b: 2}) {
alerte (k);
}
alerte (k); // Même si la boucle est terminée, la variable k est toujours dans la portée actuelle
À tout moment, les variables ne peuvent être déclarées qu'en utilisant le mot clé VAR.
L'instruction d'affectation ci-dessus:
a = 10;
Il s'agit simplement de créer une nouvelle propriété pour l'objet global (mais ce n'est pas une variable). "Pas une variable" ne signifie pas qu'elle ne peut pas être modifiée, mais signifie qu'elle ne se conforme pas au concept variable dans la spécification ECMAScript, il n'est donc pas "variable" (la raison pour laquelle il peut devenir une propriété d'un objet global est entièrement parce qu'il existe un objet global.
Voyons un exemple simple pour illustrer le problème
La copie de code est la suivante:
if (! ("a" dans la fenêtre)) {
var a = 1;
}
alerte (a);
Tout d'abord, toutes les variables globales sont des propriétés de la fenêtre, et l'instruction var a = 1; est équivalent à Window.a = 1;
Vous pouvez utiliser la méthode suivante pour détecter si la variable globale est déclarée
"Nom de la variable" dans la fenêtre
Deuxièmement, toutes les déclarations variables sont en haut de la portée de la portée, regardez un exemple similaire:
La copie de code est la suivante:
alert ("a" dans la fenêtre);
var a;
À l'heure actuelle, bien que la déclaration soit après l'alerte, l'alerte apparaît toujours vraie, car le moteur JavaScript balayera d'abord toutes les déclarations variables, puis déplacera ces déclarations variables en haut. L'effet de code final est le suivant:
La copie de code est la suivante:
var a;
alert ("a" dans la fenêtre);
Troisièmement, vous devez comprendre la signification de la question est que la déclaration de variable est avancée, mais l'affectation variable ne le fait pas, car cette ligne de code comprend la déclaration de variable et l'attribution variable.
Vous pouvez diviser l'instruction dans le code suivant:
La copie de code est la suivante:
var a; // Déclaration
a = 1; // initialise l'affectation
Donc, pour résumer, lorsque la déclaration et l'attribution variables sont utilisées ensemble, le moteur JavaScript le divisera automatiquement en deux parties pour faire avancer la déclaration variable. L'étape d'attribution n'est pas avancée car elle peut affecter l'exécution du code et obtenir des résultats inattendus.
Le code de la question équivaut à:
La copie de code est la suivante:
var a;
if (! ("a" dans la fenêtre)) {
a = 1;
}
alerte (a);
Selon l'analyse de l'exemple ci-dessus, si la variable est déclarée, vous devez ajouter VAR avant la variable locale déclarée. Si la variable globale déclarée, vous ne pouvez pas ajouter de VAR (il est préférable de limiter le nombre de variables globales et d'essayer d'utiliser des variables locales)
Ce qui suit décrit plusieurs caractéristiques de l'utilisation de var
L'utilisation d'une instruction VAR pour déclarer une variable plusieurs fois est non seulement légale, mais ne provoque pas non plus d'erreurs.
Si une déclaration réutilisée a une valeur initiale, elle ne sert qu'à une déclaration d'affectation.
Si une déclaration réutilisée n'a pas de valeur initiale, elle n'aura aucun effet sur la variable d'origine.
Les variables sans déclarations VaR existent en tant que variables globales; Les variables avec les déclarations de VAR appartiennent aux variables locales, en particulier les fonctions intérieures. Et, après les tests, il est plus rapide de déclarer avec VAR que de ne pas avec VAR. Définissez autant de variables locales que possible dans la fonction, qui est sûre et rapide, et les opérations variables sont plus raisonnables, et il n'y aura pas d'erreurs logiques causées par le fonctionnement aléatoire des variables globales dans la fonction.
Il est préférable d'utiliser la propre méthode en face à face de l'objet lors de la déclaration d'un objet, car cette vitesse est beaucoup plus rapide que la nouvelle méthode.
Le nom de variable est pris par vous-même. Afin de prendre soin de la sémantique et des spécifications, le nom de la variable peut être légèrement plus long, mais soyez prudent, la durée du nom de la variable affectera également la vitesse d'exécution du code. Les déclarations de noms de variables longues ne sont pas aussi rapides que courtes.