const

Déclare une constante à portée de bloc. Une telle variable ne peut pas recevoir une nouvelle valeur.

Sur cette page

Exemple

#
JavaScript
const courseName = 'Les bases de JavaScript'
const maxPoints = 100

try {
  maxPoints = 200
} catch (error) {
  console.log(error.name)
}

console.log(courseName, maxPoints)
Console
TypeError
Les bases de JavaScript 100

Définition et utilisation

#

const crée une variable qui ne peut pas être réaffectée. Vous lui donnez une valeur dès la déclaration, et toute tentative ultérieure d’utiliser =, += ou ++ sur ce nom se termine par une erreur TypeError.

Une constante bloque l’affectation elle-même, pas le contenu. Si elle contient un objet ou un tableau, vous pouvez toujours ajouter des éléments, les supprimer et modifier des champs. Vous ne pouvez juste pas remplacer toute la valeur par une autre.

La portée fonctionne comme avec let : un bloc entre accolades, avec une zone morte temporelle avant la déclaration. Dans le code moderne, const est le choix par défaut, car on voit immédiatement que le nom désigne la même valeur tout le temps.

Syntaxe

#
Syntaxe
const name = value
const name1 = value1, name2 = value2

Plus d’exemples

#
Le contenu d’un objet ou d’un tableau peut toujours changer
JavaScript
const student = { name: 'Léa', points: 120 }
student.points += 30

const tasks = ['HTML']
tasks.push('CSS')

console.log(student)
console.log(tasks)
Console
{ name: 'Léa', points: 150 }
['HTML', 'CSS']
Protection complète avec Object.freeze()
JavaScript
const settings = Object.freeze({ theme: 'dark', sounds: true })

try {
  settings.theme = 'light'
} catch (error) {
  console.log(error.name)
}

console.log(settings.theme)
Console
TypeError
dark

Les exemples s’exécutent comme un module, donc en mode strict, c’est pourquoi l’écriture sur un objet gelé lève une TypeError. Hors mode strict, le changement serait silencieusement ignoré.

const dans une boucle for...of
JavaScript
const lessons = ['Variables', 'Boucles', 'Fonctions']

for (const lesson of lessons) {
  console.log(lesson.toUpperCase())
}
Console
VARIABLES
BOUCLES
FONCTIONS

Dans for...of, chaque tour crée une nouvelle constante, donc const fonctionne sans problème. Dans un for (let i = 0; ...) classique, il faut let, car le compteur change.

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Écrivez const par défaut. Passez à let seulement quand une variable doit effectivement recevoir une nouvelle valeur.
  • const ne fait pas de copie et ne protège pas le contenu. Si un objet doit rester intact, gelez-le avec Object.freeze(), ou créez de nouveaux objets avec le spread.
  • Les constantes de configuration connues à l’avance s’écrivent souvent en majuscules, par ex. MAX_FUEL. C’est seulement une convention, le langage ne l’exige pas.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.