const
Déclare une constante à portée de bloc. Une telle variable ne peut pas recevoir une nouvelle valeur.
Exemple
#const courseName = 'Les bases de JavaScript'
const maxPoints = 100
try {
maxPoints = 200
} catch (error) {
console.log(error.name)
}
console.log(courseName, maxPoints)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
#const name = value
const name1 = value1, name2 = value2Plus d’exemples
#const student = { name: 'Léa', points: 120 }
student.points += 30
const tasks = ['HTML']
tasks.push('CSS')
console.log(student)
console.log(tasks)const settings = Object.freeze({ theme: 'dark', sounds: true })
try {
settings.theme = 'light'
} catch (error) {
console.log(error.name)
}
console.log(settings.theme)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 lessons = ['Variables', 'Boucles', 'Fonctions']
for (const lesson of lessons) {
console.log(lesson.toUpperCase())
}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
constpar défaut. Passez àletseulement quand une variable doit effectivement recevoir une nouvelle valeur. constne fait pas de copie et ne protège pas le contenu. Si un objet doit rester intact, gelez-le avecObject.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
#- let vs const vs varconst et let ont une portée de bloc, var une portée de fonction, et const interdit la réaffectation. Écrivez const par défaut, let pour les valeurs qui changent.
- letDéclare une variable à portée de bloc, dont la valeur peut être modifiée plus tard.
- varDéclare une variable à portée de fonction. C’est l’ancienne façon, remplacée aujourd’hui par let et const.
- Object.freeze()Gèle un objet, en bloquant l’ajout, la suppression et la modification de ses propriétés.
- Spread (...)La syntaxe spread décompose un tableau, une chaîne ou un objet en éléments individuels : pour copier, fusionner et passer des arguments.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.