Tous ceux définis en dehors du corps de fonction sont des variables globales, et celles définies à l'intérieur du corps de fonction sont des variables locales. La définition ici fait référence à la déclaration par var.
JavaScript a un concept global implicite, ce qui signifie que toute variable que vous ne déclarez pas deviendra une propriété d'objet global. Par exemple:
La copie de code est la suivante:
fonction test () {
myname = "huming";
alerte (myname);
}
test(); // "Huming"
alerte (myname); // "Huming"
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 bien définies? . Il doit y avoir une réponse, voir l'exemple suivant:
La copie de code est la suivante:
// définir trois variables globales
var global_test1 = 1;
global_test2 = 2; // manuel négatif
(fonction () {
global_test3 = 3; // manuel négatif
} ());
// tenter de supprimer
supprimer global_test1; // FAUX
supprimer global_test2; // vrai
supprimer global_test3; // vrai
// tester la suppression
alert (typeof global_test1); // "nombre"
alert (typeof global_test2); // non défini "
alert (typeof global_test3); // non défini "
D'après l'exemple ci-dessus, nous pouvons voir que Global_Test1 défini par VAR en dehors de la fonction ne peut pas être supprimé, tandis que Global_Test2 et Global_Test3 non définis par VAR sont supprimés (qu'il ait été créé dans le corps de fonction ou non).
En résumé, les variables globales déclarées par VAR en dehors de la fonction ne peuvent pas être supprimées, tandis que les variables globales implicites peuvent être supprimées.
Remarque ici: JavaScript a un comportement appelé "histing" (suspension / arrêt d'analyse / préparant).
Utilisons un exemple pour illustrer:
La copie de code est la suivante:
var myname = "huming"; // Déclarer les variables globales
fonction test () {
alerte (myname);
var myname = "local_huming";
alerte (myname);
}
test();
Devinez-vous que le contenu de l'alerte est cohérent deux fois? ? Évidemment incohérent, est-il nécessaire de dire cette cohérence? . La sortie réelle est: "Undefined", "local_huming".
L'exemple ci-dessus est équivalent à
La copie de code est la suivante:
var myname = "huming"; // Déclarer les variables globales
fonction test () {
var myname;
alert (maname); <br> myname = "local_huming";
alerte (myname); // "locale"
}
test();
La première sortie d'alerte MyName n'est pas la variable globale que vous pensez, mais la variable locale dans une portée (un corps de fonction). Bien qu'il n'ait pas été déclaré, il a été considéré comme une déclaration. C'est ce qu'on appelle le "histin".
Cela devrait être compris. Si vous utilisez une variable dans le corps de la fonction et la redécrassez plus tard, une erreur peut se produire.
Spécifications d'écriture:
La copie de code est la suivante:
fonction test () {
var a = 1,
b = 2,
c = a + b,
d = {},
e,
f;
// Corps de fonction ...
}
Les avantages sont:
1. Toutes les variables locales sont définies au début de la fonction, ce qui est pratique pour la recherche;
2. Empêcher les erreurs logiques d'être utilisées avant la définition de la variable.
Avez-vous compris la déclaration variable de JavaScript? Le contenu ci-dessus est très détaillé et facile à comprendre. Le résumé final est également très pertinent. Ne le manquez pas.