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.