| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Statements/const | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La dclaration const permet de crer une constante nomme accessible uniquement en lecture. Cela ne signifie pas que la valeur contenue est immuable, uniquement que l'identifiant ne peut pas tre raffect. Autrement dit la valeur d'une constante ne peut pas tre modifie par des raffectations ultrieures. Une constante ne peut pas tre dclare nouveau.
const number = 42;
try {
number = 99;
} catch (err) {
console.log(err);
// Expected output: TypeError: invalid assignment to const 'number'
// (Note: the exact output may be browser-dependent)
}
console.log(number);
// Expected output: 42
const nom1 = valeur1 [, nom2 = valeur2 [, [, nomN = valeurN]]];
nomNLe nom de la constante. Ce nom peut tre n'importe quel identifiant valide.
valeurNLa valeur associer la constante. Cette valeur peut tre n'importe quelle expression valide (ventuellement une expression de fonction).
Cette dclaration permet de crer une constante qui peut tre globale ou locale pour la fonction dans laquelle elle a t dclare. Les constantes font partie de la porte du bloc (comme les variables dfinies avec let). la diffrence des variables dfinies avec var, les constantes dclares au niveau global ne sont pas des proprits de l'objet global (window dans le cas du navigateur). Il est ncessaire d'initialiser une constante lors de sa dclaration. Au sein d'une mme porte, il est impossible d'avoir une constante qui partage le mme nom qu'une variable ou qu'une fonction.
Attention, la dclaration const cre une rfrence en lecture seule vers une valeur. Cela ne signifie pas que la valeur rfrence ne peut pas tre modifie ! Ainsi, si le contenu de la constante est un objet, l'objet lui-mme pourra toujours tre modifi.
Note :
Les aspects lis la zone morte temporelle de let s'appliquent galement const.
Les instructions suivantes illustrent comment fonctionne cette dclaration. On pourra tester ces instructions dans la console afin d'observer le comportement obtenu :
// On dfinit ma_fav comme une constante
// et on lui affecte la valeur 7
// Gnralement, par convention, les
// constantes sont en majuscules
const MA_FAV = 7;
// Cette raffectation lvera une exception TypeError
MA_FAV = 20;
// affichera 7
console.log("mon nombre favori est : " + MA_FAV);
// toute tentative de redclaration renvoie une erreur
// SyntaxError: Identifier 'MY_FAV' has already been declared
const MA_FAV = 20;
// le nom ma_fav est rserv par la constante ci-dessus
// cette dclaration chouera donc galement
var MA_FAV = 20;
// cela renvoie galement une erreur
let MA_FAV = 20;
// On notera l'importance de la porte de bloc :
if (MA_FAV === 7) {
// cela fonctionne sans problme et cre
// une nouvelle variable dans cette porte
let MA_FAV = 20;
// Ici, MA_FAV vaut 20
console.log("mon nombre prfr est " + MA_FAV);
// L'instruction suivante est remonte dans le
// contexte global et provoque une erreur !
var MA_FAV = 20;
}
// MA_FAV vaut toujours 7
console.log("mon nombre favori est " + MA_FAV);
// const ncessite une initialisation
const TOTO; // SyntaxError: Missing initializer in const
// const fonctionne galement avec les objects
const monObjet = { cl: "valeur" };
// craser l'objet chouera comme prcdemment
monObjet = { autreCl: "valeur" };
// En revanche, les cls d'un objet ne sont pas
// protgs et on peut donc, de faon valide, avoir
monObjet.cl = "autreValeur";
// On utilisera Object.freeze() afin qu'un objet soit immuable
// Il en va de mme avec les tableaux
const mon_tableau = [];
// On peut ajouter des lments au tableau
mon_tableau.push("A"); // ["A"]
// Mais on ne peut pas affecter une nouvelle valeur
mon_tableau = ["B"]; // lve une exception
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-let-and-const-declarations |
Cette page a t modifie le 22 mai 2026 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |