Dans ce didacticiel, vous découvrirez la différence entre let et var en JavaScript à l'aide d'exemples.
En JavaScript, les mots-clés var
et let
sont utilisés pour déclarer des variables.
Le let
mot-clé a été introduit dans la dernière version de JavaScript connue sous le nom d' ES6 (ES2015) . Et c'est la meilleure façon de déclarer des variables.
JavaScript laisse Vs var
Voici un aperçu des différences entre let
et var
.
laisser | var |
---|---|
let a une portée de bloc. | var a une portée de fonction. |
let ne permet pas de redéclarer les variables. | var permet de redéclarer des variables. |
Le levage ne se produit pas en let. | Le levage se produit dans la var. |
JavaScript laisse Vs var dans l'étendue locale
var est une fonction étendue
La variable déclarée dans une fonction avec var
peut être utilisée n'importe où dans une fonction. Par exemple,
// program to print text // variable a cannot be used here function greet() ( // variable a can be used here var a = 'hello'; console.log(a); ) // variable a cannot be used here greet(); // hello
Dans le programme ci-dessus, la variable a est déclarée avec var
. La variable a peut être utilisée n'importe où dans la fonction greet
.
let a une portée de bloc
La variable déclarée avec let
n'est accessible qu'à l'intérieur d'un bloc de code. Par exemple,
// program to print the text // variable a cannot be used here function greet() ( let a = 'hello'; // variable b cannot be used here if(a == 'hello')( // variable b can be used here let b = 'world'; console.log(a + ' ' + b); ) // variable b cannot be used here console.log(a + ' ' + b); // error ) // variable a cannot be used here greet();
Production
hello world Uncaught ReferenceError: b n'est pas défini
Dans le programme ci-dessus, la variable a est déclarée à l'intérieur de la fonction et elle peut être accédée n'importe où à l'intérieur de la fonction (a devient une fonction).
Cependant, la variable b est déclarée dans l' if
instruction block. b aura une portée de bloc et ne sera accessible qu'à l'intérieur du if
bloc.
Par conséquent, lorsque vous essayez d'accéder à b en dehors du if
bloc, une erreur se produit (comme indiqué ci-dessus dans le programme).
Remarque : Les variables déclarées à l'intérieur d'une fonction auront une portée de fonction à la fois pour var
et let
.
let ne permet pas de redéclarer les variables
1. Une variable déclarée avec var
peut être à nouveau déclarée . Par exemple,
var a = 5; // 5 var a = 3; // 3
Une variable déclarée avec let
ne peut pas être redéclarée dans le même bloc ou la même portée. Par exemple,
let a = 5; let a = 3; // error
Production
Uncaught SyntaxError: l'identificateur 'a' a déjà été déclaré
2. La redéclarer une variable avec var
une portée ou un bloc différent change également la valeur de la variable externe. Par exemple,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
Redéclarer une variable avec let
une portée ou un bloc différent traite cette variable comme une variable différente. Et la valeur d'une variable extérieure ne change pas. Par exemple,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Lorsqu'une variable déclarée avec var
est utilisée dans une boucle, la valeur de cette variable change. Par exemple,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
Dans le programme ci-dessus, la for
boucle redéclare la variable a. Par conséquent, la valeur de a
passe à 3 à la fin.
Lorsqu'une variable déclarée avec let est utilisée dans une boucle, la valeur d'une variable ne change pas. Par exemple,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
Dans le programme ci-dessus, la for
boucle traite la variable a comme une variable différente de celle déclarée ci-dessus. Et la portée de cette variable n'est qu'à l'intérieur de la for
boucle. La valeur de la variable a reste donc 2 à la fin.
ne permet pas le levage
Les variables déclarées avec var
sont hissées en haut de la portée du programme. Par exemple,
console.log(a); var a; // undefined (not an error)
Le mot let
- clé n'autorise pas le levage. Par exemple,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
Si vous souhaitez en savoir plus sur le levage, visitez le site JavaScript Hoisting.
Support du navigateur let et var
La plupart des navigateurs modernes prennent en charge l'utilisation de let
. Cependant, certains navigateurs ne prennent pas entièrement en charge let
.
Pour en savoir plus, visitez le site JavaScript permettant la prise en charge du navigateur
Remarque : en cas de portée globale, les deux var
et let
se comporteront de la même manière. Par exemple,
var a = 5; // 5
La variable a aura une portée globale et sera accessible n'importe où dans le programme.
let a = 5; // 5
La variable a aura une portée globale et sera accessible n'importe où dans le programme.