Const JavaScript
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 définie avec le mot-clé 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 Doit être assigné
Les variables const en JavaScript doivent être assignées à une valeur lors de leur déclaration :
Correct
const PI = 3.14159265359;
Incorrect
const PI;
PI = 3.14159265359;
Quand utiliser const en JavaScript ?
Déclarez toujours une variable avec const lorsque vous savez que la valeur ne doit pas être changée.
Utilisez const lorsque vous déclarez :
- Un nouveau tableau
- Un nouvel objet
- Une nouvelle fonction
- Une nouvelle expression régulière
Objets et tableaux constants
Le mot-clé const est un peu trompeur.
Il ne définit pas une valeur constante, mais une référence constante à une valeur.
À cause de cela, vous ne pouvez PAS :
- Réaffecter une valeur constante
- Réaffecter un tableau constant
- Réaffecter un objet constant
- Changer les éléments d'un tableau constant
- Changer les propriétés d'un objet constant
Mais vous pouvez :
Tableaux constants
Vous pouvez changer les éléments d'un tableau constant :
Exemple
// Vous pouvez créer un tableau constant :
const cars = ["Saab", "Volvo", "BMW"];
// Vous pouvez changer un élément :
cars[0] = "Toyota";
// Vous pouvez ajouter un élément :
cars.push("Audi");
Mais vous ne pouvez PAS réaffecter le tableau :
Exemple
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERREUR Objets constants
Vous pouvez changer 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 changer une propriété :
car.color = "red";
// Vous pouvez ajouter une propriété :
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"}; // ERREUR Différence entre var, let et const
| Portée | Redéclarer | Réaffecter | Élevé | Lie this | |
| var | Non | Oui | Oui | Oui | Oui |
| let | Oui | Non | Oui | Non | Non |
| const | Oui | Non | Non | Non | Non |
Qu'est-ce qui est bon ?
let et const ont une portée de bloc .
let et const ne peuvent pas être redéclarés .
let et const doivent être déclarés avant utilisation.
let et const ne lient pas à this .
let et const ne sont pas élevés .
Qu'est-ce qui n'est pas bon ?
var n'a pas besoin d'être déclaré.
var est élevé.
var lie à this.
Support des navigateurs
Les mots-clés let et const ne sont pas pris en charge dans Internet Explorer 11 ou antérieur.
Le tableau suivant définit les premières versions de navigateurs avec un support complet :
| Chrome 49 | Edge 12 | Firefox 36 | Safari 11 | Opera 36 |
| Mar, 2016 | Juil, 2015 | Jan, 2015 | Sep, 2017 | Mar, 2016 |
Portée de bloc
Déclarer une variable avec const est similaire à let en ce qui concerne la portée de bloc .
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;
// Ici x est 10
{
const x = 2;
// Ici x est 2
}
// Ici x est 10 Vous pouvez en apprendre davantage sur la portée de bloc dans le chapitre Portée JavaScript .
Redéclaration
Redéclarer une variable var en JavaScript est autorisé n'importe où dans un programme :
Exemple
var x = 2; // Autorisé
var x = 3; // Autorisé
x = 4; // Autorisé Redéclarer une variable existante var ou let en const , dans la même portée, 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é
} Réaffecter une variable const existante, dans la même portée, n'est pas autorisé :
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é
}
Redéclarer une variable avec const , dans une autre portée, ou dans un autre bloc, est autorisé :
Exemple
const x = 2; // Autorisé
{
const x = 3; // Autorisé
}
{
const x = 4; // Autorisé
} Élévation
Les variables définies avec var sont élevées en haut et peuvent être initialisées à tout moment.
Cela signifie : Vous pouvez utiliser la variable avant qu'elle ne soit déclarée :
Exemple
C'est OK :
carName = "Volvo";
var carName; Si vous voulez en savoir plus sur l'élévation, étudiez le chapitre Élévation JavaScript .
Les variables définies avec const sont également élevées en haut, mais pas initialisées.
Cela signifie : Utiliser une variable const avant qu'elle ne soit déclarée entraînera une ReferenceError :
Exemple
alert (carName);
const carName = "Volvo";