JavaScript Mot-clé Const
Le mot clé const
a été introduit dans ES6 (2015).
Les variables définies avec const
ne peuvent pas être redéclarées.
Les variables définies avec const
ne peuvent pas être réaffectées.
Les variables définies avec const
ont une portée de bloc.
Ne peut pas être réaffecté
Une variable const
ne peut pas être réaffectée :
Exemple
const PI = 3.141592653589793;
PI = 3.14; // Cela donnera une erreur
PI = PI + 10; // Cela donnera également une erreur
Try it Yourself »
Doit être attribué
Les variables JavaScript const
doivent se voir attribuer une valeur lorsqu'elles sont déclarées :
Correct
const PI = 3.14159265359;
Incorrect
const PI;
PI = 3.14159265359;
Quand utiliser JavaScript const ?
En règle générale, déclarez toujours une variable avec const
sauf si vous savez que la valeur va changer.
Utilisez const
lorsque vous déclarez :
- Un nouveau tableau
- Un nouvel objet
- Une nouvelle fonction
- Une nouvelle RegExp
Objets et tableaux constants
Le mot clé const
est un peu trompeur.
Il ne définit pas de valeur constante. Il définit une référence constante à une valeur.
Pour cette raison, vous ne pouvez PAS :
- Réaffecter une valeur constante
- Réaffecter un tableau de constantes
- Réaffecter un objet constant
Mais vous POUVEZ :
- Changer les éléments du tableau constant
- Modifier les propriétés d'un objet constant
Tableaux constants
Vous pouvez modifier les éléments d'un tableau constant :
Exemple
// Vous pouvez créer un tableau constant :
const cars = ["Saab", "Volvo", "BMW"];
// Vous pouvez modifier un élément :
cars[0] = "Toyota";
// Vous pouvez ajouter un élément :
cars.push("Audi");
Try it Yourself »
Mais vous ne pouvez PAS réaffecter le tableau :
Exemple
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
Try it Yourself »
Objets constants
Vous pouvez modifier les propriétés d'un objet constant :
Exemple
// Vous pouvez créer un objet const :
const car = {type:"Fiat", model:"500", color:"white"};
// Vous pouvez modifier une propriété :
car.color = "red";
// Vous pouvez ajouter une propriété :
car.owner = "Johnson";
Try it Yourself »
Mais vous ne pouvez PAS réaffecter l'objet :
Exemple
const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"}; // ERROR
Try it Yourself »
Prise en charge du navigateur
Le mot-clé const
n'est pas pris en charge dans Internet Explorer 10 ou version antérieure.
Le tableau suivant définit les premières versions de navigateur prenant entièrement en charge le mot-clé const
:
Chrome 49 | IE 11 / Edge | Firefox 36 | Safari 10 | Opera 36 |
Mar, 2016 | Oct, 2013 | Feb, 2015 | Sep, 2016 | Mar, 2016 |
Portée du bloc
Déclarer une variable avec const
est similaire à let
en ce qui concerne la Portée du bloc.
Le x déclaré dans le bloc, dans cet exemple, n'est pas le même que le x déclaré à l'extérieur du bloc :
Exemple
const x = 10;
// Ici x vaut 10
{
const x = 2;
// Ici x vaut 2
}
// Ici x vaut 10
Try it Yourself »
Vous pouvez en savoir plus sur la portée des blocs dans le chapitre Portée JavaScript.
Redéclarer
La redéclaration d'une variable var
JavaScript est autorisée n'importe où dans un programme :
Exemple
var x = 2; // Autorisé
var x = 3; // Autorisé
x = 4; // Autorisé
Redéclarer une variable var
ou let
existante en const
, dans le même périmètre, n'est pas autorisé :
Exemple
var x = 2; // Autorisé
const x = 2; // Non autorisé
{
let x = 2; // Autorisé
const x = 2; // Non autorisé
}
{
const x = 2; // Autorisé
const x = 2; // Non autorisé
}
La réaffectation d'une variable const
existante, dans la même portée, n'est pas autorisée :
Exemple
const x = 2; // Autorisé
x = 2; // Non autorisé
var x = 2; // Non autorisé
let x = 2; // Non autorisé
const x = 2; // Non autorisé
{
const x = 2; // Autorisé
x = 2;
// Non autorisé
var x = 2;
// Non autorisé
let x = 2;
// Non autorisé
const x = 2; // Non autorisé
}
La redéclaration d'une variable avec const
, dans une autre portée, ou dans un autre bloc, est autorisée :
Exemple
const x = 2; // Autorisé
{
const x = 3; // Autorisé
}
{
const x = 4; // Autorisé
}
Const Levage
Les variables définies avec var
sont hissées vers le haut et peuvent être initialisées à tout moment.
Signification : Vous pouvez utiliser la variable avant qu'elle ne soit déclarée :
Si vous souhaitez en savoir plus sur le levage, étudiez le chapitre Levage JavaScript.
Les variables définies avec const
sont également hissées en haut, mais pas initialisées.
Signification : L'utilisation d'une variable const
avant qu'elle ne soit déclarée entraînera un ReferenceError
: