Const JavaScript
Le const
mot-clé 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 const
variable ne peut pas être réaffectée :
Exemple
const PI = 3.141592653589793;
PI = 3.14; // This will give an error
PI = PI + 10; // This will also give an error
Doit être attribué
Les variables JavaScript const
doivent être valorisées lors de leur déclaration :
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.
À utiliser const
lorsque vous déclarez :
- Un nouveau tableau
- Un nouvel objet
- Une nouvelle fonction
- Une nouvelle RegExp
Objets constants et tableaux
Le mot-clé const
est un peu trompeur.
Il ne définit pas une 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 constant
- Réaffecter un objet constant
- Changer les éléments du tableau constant
- Modifier les propriétés de l'objet constant
Mais tu peux:
Tableaux constants
Vous pouvez modifier les éléments d'un tableau constant :
Exemple
// You can create a constant array:
const cars = ["Saab", "Volvo", "BMW"];
// You can change an element:
cars[0] = "Toyota";
// You can add an element:
cars.push("Audi");
Mais vous ne pouvez PAS réaffecter le tableau :
Exemple
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
Objets constants
Vous pouvez modifier les propriétés d'un objet constant :
Exemple
// You can create a const object:
const car = {type:"Fiat", model:"500", color:"white"};
// You can change a property:
car.color = "red";
// You can add a property:
car.owner = "Johnson";
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
Prise en charge du navigateur
Le const
mot-clé 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 avec prise en charge complète du mot- const
clé :
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
à Block Scope .
Le x déclaré dans le bloc, dans cet exemple, n'est pas le même que le x déclaré en dehors du bloc :
Exemple
const x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10
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 JavaScript var
est autorisée n'importe où dans un programme :
Exemple
var x = 2; // Allowed
var x = 3; // Allowed
x = 4; // Allowed
La re-déclaration d'une variable var
ou existante à , dans la même portée, n'est pas autorisée :let
const
Exemple
var x = 2; // Allowed
const x = 2; // Not allowed
{
let x = 2; // Allowed
const x = 2; // Not allowed
}
{
const x = 2; // Allowed
const x = 2; // Not allowed
}
La réaffectation d'une variable existante const
, dans le même périmètre, n'est pas autorisée :
Exemple
const x = 2; // Allowed
x = 2; // Not allowed
var x = 2; // Not allowed
let x = 2; // Not allowed
const x = 2; // Not allowed
{
const x = 2; // Allowed
x = 2;
// Not allowed
var x = 2;
// Not allowed
let x = 2;
// Not allowed
const x = 2; // Not allowed
}
Redéclarer une variable avec const
, dans une autre portée, ou dans un autre bloc, est autorisé :
Exemple
const x = 2; // Allowed
{
const x = 3; // Allowed
}
{
const x = 4; // Allowed
}
Levage constant
Les variables définies avec var
sont hissées en haut et peuvent être initialisées à tout moment.
Signification : Vous pouvez utiliser la variable avant qu'elle ne soit déclarée :
Exemple
C'est acceptable:
carName = "Volvo";
var carName;
Si vous souhaitez en savoir plus sur le levage, étudiez le chapitre JavaScript Hoisting .
Les variables définies avec const
sont également hissées en haut, mais pas initialisées.
Signification : L'utilisation d'une const
variable avant qu'elle ne soit déclarée entraînera un
ReferenceError
:
Exemple
alert (carName);
const carName = "Volvo";