Les éléments définis en dehors du corps de la fonction sont des variables globales, et ceux définis à l'intérieur du corps de la fonction sont des variables locales. La définition ici fait référence à la déclaration via var.
JavaScript a le concept de globales implicites, ce qui signifie que toute variable que vous ne déclarez pas deviendra une propriété d'objet globale. Par exemple :
Les deux résultats sont les mêmes, indiquant que myname est une variable globale.
Alors, y a-t-il une différence entre les variables globales implicites et les variables globales explicitement définies ? . La réponse est définitivement oui, regardez l'exemple ci-dessous :
Comme le montre l'exemple ci-dessus : global_test1 défini par var en dehors de la fonction ne peut pas être supprimé, et global_test2 et global_test3 qui ne sont pas définis par var sont supprimés (qu'ils soient créés ou non dans le corps de la fonction).
En résumé, les variables globales déclarées via var en dehors de la fonction ne peuvent pas être supprimées, mais les variables globales implicites peuvent être supprimées.
Il convient de noter ici : JavaScript a un comportement appelé "hoisting" (suspension/analyse supérieure/pré-analyse).
Illustrons avec un exemple :
Pensez-vous que le contenu des deux alertes est le même ? ? Manifestement incohérent, il va sans dire cohérent. . La sortie réelle est : "undefined", "local_huming".
L'exemple ci-dessus est équivalent à
Le myname généré par la première alerte n'est pas la variable globale que vous pensez, mais une variable locale dans la même portée (un corps de fonction) avec elle. Même s’il n’a pas été déclaré, il est traité comme tel. C'est ce qu'on appelle le « levage ».
Cela devrait être clair. Lorsque vous utilisez une variable dans le corps d’une fonction et que vous la déclarez à nouveau ultérieurement, une erreur peut se produire.
Spécifications de rédaction :
Les avantages sont :
1. Toutes les variables locales sont définies au début de la fonction pour une recherche facile
2. Empêchez les erreurs logiques lorsque des variables sont utilisées avant qu'elles ne soient définies.
Avez-vous compris la déclaration de variable de JavaScript ? Le contenu ci-dessus est très détaillé et facile à comprendre. Le résumé final est également très pertinent.