Maison >interface Web >js tutoriel >Introduction au levage de déclarations en JavaScript (exemple de code)

Introduction au levage de déclarations en JavaScript (exemple de code)

不言
不言avant
2019-03-05 14:40:542649parcourir

Le contenu de cet article est une introduction à la promotion des déclarations en JavaScript (exemples de code). J'espère que cela vous aidera. aidé.

1. Présentation

En JS, nous tenons pour acquis que le code est exécuté phrase par phrase, mais ce n'est pas tout à fait correct.

singer = "周杰伦";
var singer; 
console.log(singer); // 周杰伦

sing();  // 故事的小黄花
function sing() {
   console.log("故事的小黄花");
}

Si le premier morceau de code ci-dessus suit le processus normal, le var singer suivant redéfinira la valeur par défaut sur undefined, mais le résultat est 'Jay Chou'

Le deuxième morceau de code ci-dessus sera compris comme signifiant que s'il est d'abord exécuté puis déclaré, une erreur sera signalée, mais le résultat ne le sera pas.

Le bloc de code ci-dessus peut en fait être réécrit comme ceci :

var singer = undefined;
singer = "周杰伦";
console.log(singer); // 周杰伦
function sing() {
   console.log("故事的小黄花");
}
sing();  // 故事的小黄花

C'est parce que :

La déclaration de définition JS sera faite pendant la phase de compilation, l'affectation et d'autres opérations sont effectuées pendant la phase d'exécution.

Donc, vient d'abord avec la déclaration, puis l'affectation et l'exécution Il s'agit de la promotion de la déclaration des variables et des fonctions.

2. La déclaration de fonction a priorité sur la déclaration de variable

var foo = "bar";
function foo() {
   
}
typeOf(foo);  // string

var foo = "bar";
function foo() {
   
}
typeOf(foo);  // string

Que la déclaration de fonction soit placée avant ou après la déclaration de variable, la déclaration de variable remplace la fonction ; déclaration.

3. Chaque domaine sera déclaré promu

Le code suivant en affichera 10, pourquoi ?

var foo = 1;
function bar() {
   if (!foo) {
       var foo = 10;
   }
   alert(foo);
}
bar();

Parce que :

Chaque domaine sera revendiqué.

Le code ci-dessus est équivalent à :

var foo = 1;
function bar() {
   var foo = undefined;
   if (!foo) { // !foo === true
       var foo = 10;
   }
   alert(foo);
}
bar();

4. Les expressions de fonction ne déclareront pas de promotion

Tout d'abord, qu'est-ce qu'une expression de fonction ?

// 函数声明
function foo() {
   console.log("函数声明");
}

// 函数表达式
var foo = function() {
   console.log("函数表达式");
}

Les expressions de fonction ne déclareront pas de promotion, donc :

foo();  // Uncaught TypeError: foo is not a function

// 函数表达式
var foo = function() {
   console.log("函数表达式");
}

Résumé

Il existe un mécanisme pour déclarer une promotion en JavaScript, avec déclaration de variable et déclaration de fonction . Le moteur JS recherche les déclarations pour chaque portée au moment de la compilation, tandis que les affectations et les opérations se produisent au moment de l'exécution.

Les définitions de fonctions sont divisées en déclarations de fonction et expressions de fonction. Les déclarations de fonction ont une promotion de déclaration, mais pas les expressions 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer