Maison  >  Article  >  interface Web  >  JavaScript : un aperçu détaillé des portées, des chaînes de portées et de la préparation

JavaScript : un aperçu détaillé des portées, des chaînes de portées et de la préparation

php是最好的语言
php是最好的语言original
2018-08-03 09:33:351583parcourir

Les variables incluent : les variables globales, les variables locales

En JavaScript, les variables définies dans les fonctions sont des variables locales

Portée : C'est le champ d'utilisation des variables

est divisé en : portée locale et portée globale

Il n'y a pas de portée au niveau du bloc dans js --- Une variable définie entre parenthèses. Cette variable peut être utilisée en dehors des accolades

Chaîne de portée : utilisez des variables, recherchez de l'intérieur vers l'extérieur et recherchez couche par couche. recherchez-le. Utilisez directement

var num=10; //作用域链 级别:0
   var num2=20;
   var str = "abc"
   function f1() {
     var num2=20;
     function f2() {
       var num3=30;
       console.log(num);
     }
     f2();
   }
   f1();

pour rechercher couche par couche. Lors de la recherche de la portée de niveau 0, si la variable n'est toujours pas trouvée, le résultat est une erreur

Pré-analyse : il suffit de parcourir Avant que le compilateur n'analyse le code, avancez (promouvez) la déclaration des variables et des fonctions en haut de la portée

(1) Promotion des variables

Dans le cas suivant, la déclaration des variables est avancée, mais la valeur de num n'est pas avancée, le résultat est indéfini

//变量的提升
    console.log(num);
    var num=100;


//提升之后为:
var num;//变量的声明提前
console.log(num);
    var num=100;

(2)

la déclaration de fonction est avancée, Le code peut encore être exécuté

//函数的声明被提前了
    f1();
    function f1() {
      console.log("这个函数,执行了");
    }

mais pour la situation suivante, le code rapporte une erreur

f2();
    var f2=function () {
        console.log("小杨好帅哦");
    }

//声明提前后:
var f2;//为一个变量,undefind
f2();//undefind加括号是不被认可的,所以报错
    var f2=function () { 
        console.log("小杨好帅哦");
    }

Pour éviter de signaler une erreur, le code peut être modifié en :

var f2;
    f2=function () {
      console.log("小杨好帅哦");
    };
    f2();

Articles connexes :

Parlons de la portée et de la chaîne de portée JavaScript

In- analyse approfondie de la portée et de la chaîne de portée de JavaScript

Vidéos associées :

Jouer avec des exemples de liaison à trois niveaux de javascript

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!

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