[RAPPEL] Let et Const

Section Progression:


 
Jusqu’à présent pour déclarer une variable, on utilisait uniquement le mot-clé var.
Et bien maintenant grâce à ES6, on peut utiliser 2 nouveaux mots-clés pour déclarer des variables: let et const.

 

La grosse particularité de let et const concerne les scopes et on en parlera dans une prochaine vidéo mais pour le moment je vous propose qu’on fasse plus ample connaissance avec ces 2 mots-clés.

 

Découvrons le let

Le mot-clé let est utilisé plus ou moins comme le var pour déclarer une variable

Exemple:

let x = 5;

console.log(x);

Le code ci-dessus crée la variable x et y stocke le chiffre 5.
Et donc le console.log(x) affiche 5.

 

Mais alors à quoi ça sert de rajouter ce mot-clé s’il agit exactement comme le var.
On cherche à se simplifier la vie pas à la compliquer.

 

La vraie raison vous la connaitrez dans la partie qui concernent les scopes. Patience…

 

Découvrons le const

Le mot-clé const est particulier, il est différent pour plusieurs raisons:

  • Pour ce qui concerne les scopes, et là encore, patience, on en reparlera dans la partie sur les scopes
  • Il faut lui assigner une valeur directement et on ne pourra pas lui en assigner une autre: c’est une constante.

 

Le code suivant

const x;

x = 5;

nous donne une erreur Missing initializer in const declaration car il faut lui assigner une valeur dès le départ !

 

Et le code suivant

const x = 5;

x = 7;

nous donne une erreur Assignment to constant variable car on ne peut assigner une valeur à une variable créée avec const qu’une seule fois !

 

const et les objets

Vous vous souvenez de ce qu’on a dit sur les objets ?

C’est un type spécial qui fonctionne par référence. Et pour modifier un objet existant, il y a 2 façons:

Soit je peux modifier ou rajouter des propriétés à l’objet existant

Exemple:

var x = { name: "John" };
x.name =  "Codeur";

Soit je peux directement lui réassigner une nouvelle valeur en créant un nouvel objet

Exemple:

var x = { name: "John" };
x = { name: "Codeur" };

 

Alors pour les objets créés avec le const, on peut les modifier mais on ne peut pas leur assigner une nouvelle valeur.

Prenons le code suivant:

const x = { name: "John" };
x.name =  "Codeur";

Ce code fonctionne sans erreur car on n’assigne pas une nouvelle valeur à x, on change l’existant et ça le const le permet.

 

Par contre avec le code suivant:

const x = { name: "John" };
x = { name: "Codeur" };

On obtient une erreur car on essaie d’assigner une nouvelle valeur à x et const ne le permet pas.

 

Pas de Hoisting pour let et const

Une autre petite précision pour let et const, il n’y a pas de hoisting de variables!

Prenons le code suivant:

console.log(x);

let x = 5;

Ce code n’affiche pas undefined. Il renvoit l’erreur x is not defined
x a été créé avec let et donc il n’y a pas de hoisting pour cette variable.
C’est-à-dire qu’au moment du console.log(x) la variable x n’a toujours pas été déclarée.