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
Essayez-le vous-même »

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

    Mais vous pouvez :

  • Changer les éléments d'un tableau constant
  • Changer les propriétés d'un objet constant

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");
Essayez-le vous-même »

Mais vous ne pouvez PAS réaffecter le tableau :

Exemple

const cars = ["Saab", "Volvo", "BMW"];

cars = ["Toyota", "Volvo", "Audi"]; // ERREUR
Essayez-le vous-même »

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";
Essayez-le vous-même »

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
Essayez-le vous-même »

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
Essayez-le vous-même »

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;
Essayez-le vous-même »

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";
Essayez-le vous-même »