Maison >interface Web >js tutoriel >Explication détaillée des compétences de déclaration_javascript des variables JavaScript

Explication détaillée des compétences de déclaration_javascript des variables JavaScript

WBOY
WBOYoriginal
2016-05-16 16:30:091458parcourir

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 :

Copier le code Le code est le suivant :

fonction test(){
Monnom = "huming";
alerte(monnom);
>
test(); // "huming"
alert(monnom); //"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 explicitement définies ? . La réponse est définitivement oui, regardez l'exemple ci-dessous :

Copier le code Le code est le suivant :

// Définir trois variables globales
var global_test1 = 1;
global_test2 = 2; // Matériel pédagogique négatif
(fonction () {
Global_test3 = 3 ; // Matériel pédagogique négatif
}());
// Tentative de suppression
supprimer global_test1; // faux
supprimer global_test2; // vrai
supprimer global_test3; // vrai
// Tester la suppression
alert(typeof global_test1); // "numéro"
alert(typeof global_test2); // "non défini"
alert(typeof global_test3); // "non défini"

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 :

Copier le code Le code est le suivant :

var myname = "huming"; //Déclarer les variables globales
fonction test() {
alerte(monnom);
var monnom = "local_huming";
alerte(monnom);
>
test();

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 à

Copier le code Le code est le suivant :

var myname = "huming"; //Déclarer les variables globales
fonction test() {
var monnom;
alert(maname);
monnom = "local_huming";
alert(monnom); // "local"
>
test();

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 :

Copier le code Le code est le suivant :

fonction test() {
var a = 1,
b = 2,
        c = a b,
      d = {},
        e,
         f;
// corps de la fonction...
>

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.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn