JavaScript let Vs var (avec exemples)

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 varet letsont utilisés pour déclarer des variables.

Le letmot-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 letet 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 varpeut ê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 letn'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' ifinstruction block. b aura une portée de bloc et ne sera accessible qu'à l'intérieur du ifbloc.

Par conséquent, lorsque vous essayez d'accéder à b en dehors du ifbloc, 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 varet let.

let ne permet pas de redéclarer les variables

1. Une variable déclarée avec varpeut être à nouveau déclarée . Par exemple,

 var a = 5; // 5 var a = 3; // 3

Une variable déclarée avec letne 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 varune 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 letune 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 varest 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 forboucle redéclare la variable a. Par conséquent, la valeur de apasse à 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 forboucle 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 forboucle. La valeur de la variable a reste donc 2 à la fin.

ne permet pas le levage

Les variables déclarées avec varsont 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 varet letse 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.

Articles intéressants...