Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée de la promotion des variables js

小云云
Libérer: 2018-02-26 14:08:27
original
1543 Les gens l'ont consulté


1. L'exécution du code JavaScript est divisée en deux étapes :

  • Étape de pré-analyse : dans l'étape de pré-analyse, js promouvra les variables déclarées avec var et les blocs d'instructions commençant par function, et remplacez var par Les variables déclarées et les fonctions sont promues au début du code. A noter que la fonction est promue dans son ensemble. Les variables déclarées par var ne font que promouvoir la déclaration de variable, et les opérations d'affectation ne seront pas effectuées en même temps que la promotion

  • Exécution. phase

2. Par exemple :

alert(a)//undefinedvar a = 1;  

为什么会输出undefined呢?
模拟提升的之后的代码 ,上一段代码相当于 var a;  //声明一个变量。但是没有初始化Alert(a);
 a = 1;  //初始化为1----------
fun();    //在C语言中,如果不先声明函数,先调用后声明函数会报错,但是js会正常运行function fun(){
    alert(“函数被声明了”);
}

代码提升后 相当于 
function fun(){
    alert(“函数被声明了”);
}

fun();
Copier après la connexion

3. Règles de promotion pour plusieurs fonctions portant le même nom : toutes sont promues, mais les fonctions suivantes écraseront les fonctions précédentes.

func1();  //输出  我是后声明的函数function func1(){
   console.log('我是先声明的函数');
}function func1(){
   console.log('我是后声明的函数');
}
模拟提升后的代码function func1(){
   console.log('我是先声明的函数');
}function func1(){
   console.log('我是后声明的函数');
}
func1();
 函数名也是变量,后面的会覆盖前面。
Copier après la connexion

4 . Règles de promotion des variables portant le même nom que les noms de fonctions : S'il existe une variable portant le même nom qu'une fonction, la variable sera ignorée et seule la fonction sera promue

alert(foo); //输出function foo(){}function foo(){
}
var foo = 2;
alert(foo); //输出 2----------模拟提升后的代码function foo{}Alert(foo);
foo = 2;
alert(foo);
Copier après la connexion

5. La promotion des variables est divisée en portées

var num = 123; function test(){
     console.log(num);     var num = 10;
 }
 test(); //输出undefined; ----------


模拟变量提升后的代码  var num;function test(){var num
   console.log(num); //函数内部声明了num,但是没赋值。因为在函数内部声明了num,所以函数会使用它内部声明的num,而不会去全局中找  
   num = 10;
  }
num = 123;
Copier après la connexion

6. Les expressions de fonction ne seront pas promues

func();  // func is not a function
 var func = function(){
    alert("1234");
 }


----------


提升后的代码var func;
func();
func = function(){
    alert("1234");
};
 用var声明的变量(包括函数表达式),只提升声明,不提升赋值操作
Copier après la connexion

7. 🎜>var s1 = « qq »;

}
foo();

function foo() {
    console.log(s1); 
    var s1 = "tengxunqq";
    console.log(s1);
Copier après la connexion

Recommandations associées :
提升后:    var s1;    function foo() {
        var s1;
        console.log(s1); //
        s1= "tengxunqq";
        console.log(s1); //t
    }
     s1 = "qq";
    foo();  //先输出 undefined  后engxunqq
Copier après la connexion


Introduction aux variables JS et à leur portée points de connaissances

Comment déclarer la portée d'une variable JS ? Et une explication détaillée des exemples de portée dans les fonctions

Explication détaillée de la promotion des variables js et des exemples de pré-analyse de la déclaration de fonction

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!