JavaScript let et const
ECMAScript 2015(ECMAScript 6)
ES2015 (ES6) a introduit deux nouveaux mots-clés JavaScript importants :letetconst。
Les variables déclarées avec let ne sont valides que dans le bloc de code où se trouve l'instruction let.
const déclare une constante en lecture seule. Une fois déclarée, la valeur de la constante ne peut pas être modifiée.
Avant ES6, JavaScript n'avait que deux types de portée :Variables globalesetVariables locales à l'intérieur des fonctions。
Variables globales
Les variables déclarées en dehors d'une fonction ont une portée globale :
Exemple
Essayez-le vous-même »
Les variables globales sont accessibles depuis n'importe où dans un programme JavaScript.
Variables locales
Les variables déclarées à l'intérieur d'une fonction ont une portée locale (au sein de la fonction) :
Exemple
Essayez-le vous-même »
Les variables déclarées avec var à l'intérieur d'une fonction ne sont accessibles qu'au sein de la fonction ; si var n'est pas utilisé, ce sont des variables globales.
Portée de bloc JavaScript
Les variables déclarées avec le mot-clé var n'ont pas de portée de bloc ; elles peuvent toujours être accessibles en dehors de {}.
{
var x = 2;
}
// 这里可以使用 x 变量
Avant ES6, il n'y avait pas de concept de portée de bloc.
ES6 peut utiliser le mot-clé let pour obtenir une portée de bloc.
Les variables déclarées avec let ne sont valides qu'à l'intérieur du bloc de code où se trouve la commande let{}et sont valides à l'intérieur ; à l'extérieur{}elles ne sont pas accessibles.
{
let x = 2;
}
// 这里不能使用 x 变量
Redéclaration de variables
Redéclarer des variables avec le mot-clé var peut causer des problèmes.
Redéclarer une variable à l'intérieur d'un bloc redéclare aussi la variable en dehors du bloc :
Exemple
Essayez-le vous-même »
Le mot-clé let peut résoudre ce problème, car il n'est valide qu'à l'intérieur du bloc de code où se trouve la commande let{}et est valide à l'intérieur.
Exemple
Essayez-le vous-même »
Prise en charge des navigateurs
Internet Explorer 11 et les navigateurs antérieurs ne prennent pas en charge le mot-clé let.
Le tableau ci-dessous liste les versions minimales des navigateurs qui prennent en charge le mot-clé let.
| Chrome 49 | IE / Edge 12 | Firefox 44 | Safari 11 | Opera 36 |
| mars 2016 | juil. 2015 | janv. 2015 | sept. 2017 | mars 2016 |
Portée de boucle
Utilisation du mot-clé var :
Exemple
Essayez-le vous-même »
Utilisation du mot-clé let :
Exemple
Essayez-le vous-même »
Dans le premier exemple, le varvarmot-clé est utilisé. La variable qu'il déclare est globale, à la fois à l'intérieur et à l'extérieur de la boucle.
Dans le deuxième exemple, le letletmot-clé est utilisé. La variable qu'il déclare a une portée uniquement à l'intérieur de la boucle ; les variables à l'extérieur de la boucle ne sont pas affectées.
Variables locales
Lorsqu'il est utilisé dans le corps d'une fonction, levaretletmot-clé déclare des variables d'une manière assez similaire.
Leur portée estlocale.:
// 使用 var
function myFunction() {
var carName = "Volvo"; // 局部作用域
}
// 使用 let
function myFunction() {
let carName = "Volvo"; // 局部作用域
}
Variables globales
Lorsqu'il est utilisé en dehors du corps d'une fonction ou en dehors d'un bloc de code, levaretletmot-clé déclare des variables qui sont également assez similaires.
Leur portée estglobale.:
// 使用 var var x = 2; // 全局作用域 // 使用 let let x = 2; // 全局作用域
Variables globales en HTML
En JavaScript, la portée globale s'applique à l'environnement JavaScript.
En HTML, la portée globale s'applique à l'objet window.
Les variables globales déclarées avec levarmot-clé var appartiennent à l'objet window :
Exemple
Essayez-le vous-même »
Les variables globales déclarées avec leletmot-clé let n'appartiennent pas à l'objet window :
Exemple
Essayez-le vous-même »
Réinitialisation des variables
Les variables déclarées avec levarmot-clé var peuvent être modifiées n'importe où :
Dans la même portée ou portée de bloc, vous ne pouvez pas utiliserletlet pour réinitialiser les variables déclarées avecvarvar :
var x = 2; // 合法
let x = 3; // 不合法
{
var x = 4; // 合法
let x = 5 // 不合法
}
Dans la même portée ou portée de bloc, vous ne pouvez pas utiliserletlet pour réinitialiser les variables déclarées avecletvar :
let x = 2; // 合法
let x = 3; // 不合法
{
let x = 4; // 合法
let x = 5; // 不合法
}
Dans la même portée ou portée de bloc, vous ne pouvez pas utiliservarlet pour réinitialiser les variables déclarées avecletvar :
let x = 2; // 合法
var x = 3; // 不合法
{
let x = 4; // 合法
var x = 5; // 不合法
}
letLe mot-clé let peut être utilisé pour redéclarer et réaffecter des variables dans différentes portées ou différentes portées de bloc :
let x = 2; // 合法
{
let x = 3; // 合法
}
{
let x = 4; // 合法
}
Remontée des variables
En JavaScript, les variables définies avec le mot-clé var peuvent être déclarées après leur utilisation ; c'est-à-dire que les variables peuvent être utilisées avant d'être déclarées (remontée des variables JavaScript)。
Les variables définies avec le mot-clé let ne peuvent pas être déclarées après utilisation ; c'est-à-dire que les variables doivent être déclarées avant utilisation.
// 在这里不可以使用 carName 变量 let carName;
Le mot-clé const
const est utilisé pour déclarer une ou plusieurs constantes. Elles doivent être initialisées lors de la déclaration, et leurs valeurs ne peuvent pas être modifiées après l'initialisation :
Exemple
Essayez-le vous-même »
constLa définition de constantes est similaire à l'utilisation duletmot-clé let pour définir des variables :
- Les deux ont une portée de bloc
- Aucune des deux ne peut avoir le même nom qu'une autre variable ou fonction dans la même portée.
Les deux ont aussi les deux différences suivantes :
constLes constantes déclarées avec const doivent être initialisées, tandis queletles variables déclarées avec let n'ont pas besoin de l'être.- La valeur d'une constante définie avec const ne peut pas être modifiée par réaffectation, ni être redéclarée. Cependant, les variables définies avec let peuvent avoir leur valeur modifiée.
var x = 10;
// 这里输出 x 为 10
{
const x = 2;
// 这里输出 x 为 2
}
// 这里输出 x 为 10
Les constantes déclarées avec const doivent être initialisées :
// 错误写法 const PI; PI = 3.14159265359; // 正确写法 const PI = 3.14159265359;
Pas vraiment constant
L'essence de const : les variables définies avec const ne sont pas de vraies constantes ; elles ne sont pas immuables. Il définit une référence constante vers une valeur. Les objets ou tableaux définis avec const sont en fait mutables. Le code suivant ne lèvera pas d'erreur :
Exemple
Essayez-le vous-même »
Mais nous ne pouvons pas réaffecter un objet constant :
Exemple
Essayez-le vous-même »
L'exemple suivant modifie un tableau constant :
Exemple
Essayez-le vous-même »
Mais on ne peut pas réaffecter un tableau constant :
Exemple
Essayez-le vous-même »
Prise en charge des navigateurs
Internet Explorer 10 et les navigateurs plus anciens ne prennent pas en charge le mot-clé const.
Le tableau suivant répertorie les premières versions de navigateur qui prennent en charge le mot-clé const.
| Chrome 49 | IE / Edge 11 | Firefox 36 | Safari 10 | Opera 36 |
| mars 2016 | oct. 2013 | Févr., 2015 | Sept., 2016 | mars 2016 |
Réinitialisation des variables
Utilisation devarLes variables déclarées avec le mot-clé peuvent être modifiées n'importe où :
Exemple
Dans la même portée ou portée de bloc, vous ne pouvez pas utiliserconstle mot-clé pour redéclarervaretletvariables déclarées avec le mot-clé :
var x = 2; // 合法
const x = 2; // 不合法
{
let x = 2; // 合法
const x = 2; // 不合法
}
Dans la même portée ou portée de bloc, vous ne pouvez pas utiliserconstle mot-clé pour redéclarerconstles variables déclarées avec le mot-clé :
const x = 2; // 合法
const x = 3; // 不合法
x = 3; // 不合法
var x = 3; // 不合法
let x = 3; // 不合法
{
const x = 2; // 合法
const x = 3; // 不合法
x = 3; // 不合法
var x = 3; // 不合法
let x = 3; // 不合法
}
constLe mot-clé peut être redéclaré et affecté dans différentes portées ou différentes portées de bloc :
const x = 2; // 合法
{
const x = 3; // 合法
}
{
const x = 4; // 合法
}
Remontée des variables
Les variables définies avec le mot-clé var de JavaScript peuvent être déclarées après leur utilisation, c'est-à-dire que les variables peuvent être utilisées avant leur déclaration (hissage des variables JavaScript)。
Exemple
Essayez-le vous-même »
Les variables définies avec le mot-clé const ne peuvent pas être déclarées après leur utilisation ; c'est-à-dire que les variables doivent être déclarées avant d'être utilisées.
carName = "Volvo"; // 在这里不可以使用 carName 变量 const carName = "Volvo";Autres extensions