web-dev-qa-db-fra.com

Pouvez-vous utiliser des variables constantes en JavaScript?

J'ai lu sur un site que vous pouvez faire des variables constantes en JavaScript comme:

const x = 20;

mais sur un autre site, j'ai lu que vous ne pouvez pas. Donc je suis confus maintenant qu'est-ce que c'est maintenant?

Également dans Visual Studio 2010 lorsque j'écris const, il le souligne dans le fichier JavaScript et affiche une erreur de syntaxe.

36
chobo2

const est une fonctionnalité proposée d'ECMAScript Harmony (avec un let de portée correcte, il est censé remplacer var et les globaux implicites). ECMAScript Harmony est un sac d'idées pour les prochaines versions d'ECMAScript.

const faisait également partie d'ECMAScript 4.

ECMAScript 4 n'a jamais été publié et ne le sera jamais, et ECMAScript Harmony ne sortira que dans quelques années. Par conséquent, vous ne pouvez pas l'utiliser de manière fiable.

Il existe des implémentations ou des dérivés d'ECMAScript qui implémentent const (ActionScript, par exemple). Il existe également des implémentations qui acceptent const comme synonyme de var (IOW, vous pouvez utiliser const, mais cela ne vous donnera aucune protection.)

Cependant, à moins que vous ne puissiez absolument garantir que votre code ne fonctionnera que sur des versions très spécifiques d'implémentations très spécifiques de dérivés très spécifiques d'ECMAScript, il est probablement préférable de l'éviter. (Ce qui est vraiment dommage, car const et surtout let sont une amélioration énorme par rapport à var et globaux implicites.)

40
Jörg W Mittag

si vous recherchez une variable en lecture seule, vous simulez cela avec quelque chose comme

var constants = new (function() {
    var x = 20;
    this.getX = function() { return x; };
})();

puis l'utiliser comme

constants.getX()
25
lincolnk

La solution est de créer un objet et de mettre toutes vos constantes dans l'objet:

const={};

const.x=20;

const.y=30;

Object.freeze(const);  // finally freeze the object

Usage:

var z=const.x + const.y;

Toute tentative de modification de la variable génère une erreur:

const.x=100;  <== raises error
5
user2373071

JavaScript ES6 (re) a introduit le mot-clé const qui est pris en charge dans tous les principaux navigateurs .

Les variables déclarées via const ne peuvent pas être déclarées ou réaffectées.

En dehors de cela, const se comporte comme let .

Il se comporte comme prévu pour les types de données primitifs (booléen, nul, non défini, nombre, chaîne, symbole):

const x = 1;
x = 2;
console.log(x); // 1 ...as expected, re-assigning fails

Attention: Soyez conscient des pièges concernant les objets:

const o = {x: 1};
o = {x: 2};
console.log(o); // {x: 1} ...as expected, re-assigning fails

o.x = 2;
console.log(o); // {x: 2} !!! const does not make objects immutable!

const a = [];
a = [1];
console.log(a); // 1 ...as expected, re-assigning fails

a.Push(1);
console.log(a); // [1] !!! const does not make objects immutable
3
le_m

Il n'y a pas de const dans ECMAScript (sans tenir compte de la version 4.0 morte et d'ActionScript).

const est disponible dans JScript.NET , et certains versions récentes des moteurs JS par ex. Firefox, Opera 9, Safari en tant qu'extension spécifique au fournisseur.

3
kennytm

Je crois qu'il y a quelque chose qui n'est pas avec var, c'est une variable globale .... il n'y a pas de const en js.

var a="test" est différent de a="test"

2
Samit

Non, il n'y a pas de type de données "const" en JavaScript.

JavaScript est un langage peu typé. Chaque type de variable est déclaré avec un var

1
Rajat

Consultez ce document, il explique comment utiliser const en javascript

http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml

0
rekordboy