Vous êtes sur la page 1sur 6

Var, Let et Const – Quelle est la

différence ?

Var
Portée de var
La portée signifie essentiellement où ces variables sont disponibles pour être utilisées.
var les déclarations ont une portée globale ou une portée fonction/locale.

La portée est globale lorsqu'une var variable est déclarée en dehors d'une fonction.
Cela signifie que toute variable déclarée à var l'extérieur d'un bloc fonction est
disponible pour être utilisée dans toute la fenêtre.

var est une fonction étendue lorsqu'elle est déclarée dans une fonction. Cela signifie
qu'il est disponible et accessible uniquement dans cette fonction.

Pour mieux comprendre, regardez l'exemple ci-dessous.

var greeter = "hey hi";

function newFunction() {
var hello = "hello";
}

Ici, greeter est de portée globale car il existe en dehors d'une fonction alors qu'il
hello est de portée de fonction. Nous ne pouvons donc pas accéder à la variable
hello en dehors d'une fonction. Donc si on fait ça :

var tester = "hey hi";

function newFunction() {
var hello = "hello";
}
console.log(hello); // error: hello is not defined

Nous aurons une erreur résultant de hello l'indisponibilité en dehors de la fonction.


les variables var peuvent être redéclarées et mises à
jour
Cela signifie que nous pouvons le faire dans le même périmètre et que nous
n'obtiendrons pas d'erreur.

var greeter = "hey hi";


var greeter = "say Hello instead";

et ceci aussi

var greeter = "hey hi";


greeter = "say Hello instead";

Levage du var
Le levage est un mécanisme JavaScript où les variables et les déclarations de fonction
sont déplacées vers le haut de leur portée avant l'exécution du code. Cela signifie que
si nous faisons ceci :

console.log (greeter);
var greeter = "say hello"

il est interprété comme ceci :

var greeter;
console.log(greeter); // greeter is undefined
greeter = "say hello"

Ainsi, var les variables sont hissées au sommet de leur portée et initialisées avec une
valeur de undefined .

Problème avec var


Il y a une faiblesse qui vient avec   var . Je vais utiliser l'exemple ci-dessous pour
expliquer :
var greeter = "hey hi";
var times = 4;

if (times > 3) {
var greeter = "say Hello instead";
}

console.log(greeter) // "say Hello instead"

Ainsi, puisque times > 3 renvoie vrai, greeter est redéfini en "say Hello instead" .
Bien que ce ne soit pas un problème si vous voulez sciemment greeter être redéfini,
cela devient un problème lorsque vous ne réalisez pas qu'une variable greeter a déjà
été définie auparavant.

Si vous avez utilisé greeter d'autres parties de votre code, vous pourriez être surpris
du résultat que vous pourriez obtenir. Cela entraînera probablement beaucoup de
bogues dans votre code. C'est pourquoi let et const sont nécessaires.

Laisser
let est maintenant préféré pour la déclaration des variables. Ce n'est pas une surprise
car il s'agit d'une amélioration des var déclarations. Cela résout également le
problème var que nous venons de couvrir. Voyons pourquoi il en est ainsi.

let est de portée de bloc


Un bloc est un morceau de code délimité par {}. Un bloc vit entre accolades. Tout ce qui
est entre accolades est un bloc.

Ainsi, une variable déclarée dans un bloc avec let  n'est disponible que pour une
utilisation dans ce bloc. Permettez-moi d'expliquer cela avec un exemple:

let greeting = "say Hi";


let times = 4;

if (times > 3) {
let hello = "say Hello instead";
console.log(hello);// "say Hello instead"
}
console.log(hello) // hello is not defined
Nous voyons que l'utilisation hello en dehors de son bloc (les accolades où il a été
défini) renvoie une erreur. C'est parce que let les variables ont une portée de bloc.

let peut être mis à jour mais pas re-déclaré.


Tout comme var , une variable déclarée avec let peut être mise à jour dans sa portée.
Contrairement à var , une let variable ne peut pas être redéclarée dans sa portée.
Donc, pendant que cela fonctionnera :

let greeting = "say Hi";


greeting = "say Hello instead";

cela renverra une erreur :

let greeting = "say Hi";


let greeting = "say Hello instead"; // error: Identifier 'greeting' has already been d

Cependant, si la même variable est définie dans des portées différentes, il n'y aura pas
d'erreur :

let greeting = "say Hi";


if (true) {
let greeting = "say Hello instead";
console.log(greeting); // "say Hello instead"
}
console.log(greeting); // "say Hi"

Pourquoi n'y a-t-il pas d'erreur ? En effet, les deux instances sont traitées comme des
variables différentes car elles ont des portées différentes.

Ce fait fait let un meilleur choix que var . Lorsque vous utilisez let , vous n'avez pas
à vous soucier si vous avez déjà utilisé un nom pour une variable car une variable
n'existe que dans sa portée.

De plus, étant donné qu'une variable ne peut pas être déclarée plus d'une fois dans
une portée, le problème évoqué précédemment qui se produit avec var ne se produit
pas.
Levage de laisser
Tout comme   var , let les déclarations sont hissées au sommet. Contrairement à
var qui est initialisé en tant que undefined , le let mot-clé n'est pas initialisé. Donc, si
vous essayez d'utiliser une let variable avant la déclaration, vous obtiendrez un
Reference Error .

Const.
Variables déclarées avec les const valeurs maintenues constantes. const les
déclarations partagent certaines similitudes avec let les déclarations.

les déclarations const ont une portée de bloc


Comme let les déclarations, const les déclarations ne sont accessibles que dans le
bloc où elles ont été déclarées.

const ne peut pas être mis à jour ou re-déclaré


Cela signifie que la valeur d'une variable déclarée avec const reste la même dans sa
portée. Il ne peut pas être mis à jour ou re-déclaré. Donc si nous déclarons une variable
avec const , nous ne pouvons pas non plus faire ceci :

const greeting = "say Hi";


greeting = "say Hello instead";// error: Assignment to constant variable.

ni ceci :

const greeting = "say Hi";


const greeting = "say Hello instead";// error: Identifier 'greeting' has already been

Chaque const déclaration doit donc être initialisée au moment de la déclaration.

Ce comportement est quelque peu différent lorsqu'il s'agit d'objets déclarés avec
const . Bien qu'un const objet ne puisse pas être mis à jour, les propriétés de ces
objets peuvent être mises à jour. Par conséquent, si nous déclarons un const objet
comme ceci :
const greeting = {
message: "say Hi",
times: 4
}

alors que nous ne pouvons pas faire ceci:

greeting = {
words: "Hello",
number: "five"
} // error: Assignment to constant variable.

nous pouvons le faire:

greeting.message = "say Hello instead";

Cela mettra à jour la valeur de greeting.message sans renvoyer d'erreurs.

Levage de const
Tout comme let , const les déclarations sont hissées au sommet mais ne sont pas
initialisées.

Donc, juste au cas où vous auriez manqué les différences, les voici :

var les déclarations sont de portée globale ou de portée de fonction tandis que
let et const sont de portée de bloc.

var les variables peuvent être mises à jour et re-déclarées dans son périmètre ;
let les variables peuvent être mises à jour mais pas re-déclarées ; const les
variables ne peuvent être ni mises à jour ni re-déclarées.

Ils sont tous hissés au sommet de leur portée. Mais tandis que var les variables
sont initialisées avec undefined , let et const les variables ne sont pas
initialisées.

Tandis que var et let peuvent être déclarés sans être initialisés,
const doivent être initialisés lors de la déclaration.

Vous aimerez peut-être aussi