Regardons un exemple simple pour illustrer le problème
if (!("a" in window)) { var a = 1; } alert(a);
Tout d'abord, toutes les variables globales sont des attributs de window L'instruction var a = 1; 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, tout les déclarations de variables sont En haut de la portée, regardez un exemple similaire :
Copiez le code Le code ressemble à ceci :
alert("a" in window); var a;
À ce stade, même si la déclaration est en alerte Après cela, la fenêtre contextuelle d'alerte est toujours vraie, car le moteur JavaScript analysera d'abord toutes les déclarations de variables, puis déplacera ces déclarations de variables vers le haut. ceci :
var a; alert("a" in window);
Troisièmement, vous devez comprendre que le sens de cette question est que la déclaration de variable est avancée, mais l'affectation de variable ne l'est pas, car cette ligne de code comprend la déclaration de variable et l'affectation de variable.
Vous pouvez diviser l'instruction dans le code suivant :
var a; //声明 a = 1; //初始化赋值
Donc, en résumé, lorsque la déclaration et l'affectation de variable sont utilisées ensemble, le moteur JavaScript la divisera automatiquement en The deux étapes consistent à déclarer les variables à l'avance, mais pas à avancer l'étape d'affectation car cela peut affecter l'exécution du code et produire des résultats imprévisibles.
Le code dans la question est équivalent à :
var a; if (!("a" in window)) { a = 1; } alert(a);
D'après l'analyse de l'exemple de question ci-dessus, lors de la déclaration d'une variable, s'il s'agit d'une variable locale déclarée, var doit être ajouté devant. Les variables globales n'ont pas besoin d'être ajoutées var (il est préférable de limiter le nombre de variables globales et d'utiliser autant que possible des variables locales)
Ce qui suit décrit plusieurs fonctionnalités de using var
Utilisation de l'instruction var déclarer une variable plusieurs fois est non seulement légale, mais ne provoque également aucune erreur.
Si une instruction réutilisée a une valeur initiale, alors elle ne joue que le rôle d'une instruction d'affectation.
Si une déclaration réutilisée n'a pas de valeur initiale, elle n'aura aucun impact sur les variables initialement existantes.
Les variables sans déclaration var existent en tant que variables globales ; les variables avec déclaration var sont des variables locales, en particulier à l'intérieur des fonctions. De plus, après test, la déclaration avec var est plus rapide que sans var. Configurez autant de variables locales que possible dans la fonction, afin qu'elle soit sûre et rapide, et que les opérations sur les variables soient plus raisonnables. Les erreurs logiques ne seront pas causées par une manipulation aléatoire des variables globales dans la fonction.
Lors de la déclaration d'un objet, il est préférable d'utiliser la méthode self-face de l'objet, qui est beaucoup plus rapide que la nouvelle méthode.
Le nom de la variable est choisi 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 veuillez noter que la longueur du nom de la variable affectera également l'exécution. vitesse du code. Les déclarations avec des noms de variables longs ne s'exécutent pas aussi rapidement que les déclarations courtes.
Le sujet est le suivant. La question est : Quels sont les résultats de sortie des deux alertes ?
<script type="text/javascript"> var a = 1; var a; alert(typeof a); (function () { b = '-----'; var b; })(); alert( typeof b); </script>
Exécutez le code dans Chrome. Le résultat correct du code est 1.numéro 2.undéfini. Ce qui est examiné ici est le concept de déclaration préalable de variables JavaScript.
Nous examinons un autre exemple, tel que le suivant :
test(); function test(){ alert("Hello World!"); }
Le programme ne signalera pas d'erreur, mais le résultat en cours d'exécution est : Hello World !. Principe : Avant que l'ordinateur ne commence à exécuter l'instruction, il recherchera d'abord toutes les définitions de fonctions, puis enregistrera les fonctions associées.
Question 1 :
var a = 1;
var a;
Déclarer la variable a à la ligne 2 équivaut à déclarer a en haut, puis la première phrase consiste à redéclarer a, puis La valeur attribuée est 1. Donc le type de a est un nombre
Question 2 :
b = '-----';
var b
Analyse de la question 2 : b='-----', programme d'abord , il vérifiera s'il y a une déclaration de variable b dans le contexte, si c'est le cas, il attribuera directement la valeur à '-----'. Mais alert(typeof b); est en dehors de la fonction et génère la variable globale b, qui ne sont toutes pas définies.
Attention : l'affectation aux variables ne se fait pas à l'avance.
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!