94 votes

Comment déclarer des constantes de chaîne en JavaScript?

Je veux déclarer des constantes de chaîne en JavaScript.

Y a-t-il un moyen de faire ça?

123voto

alex Points 186293

JavaScript est un concept limité de constantes.


Pour une compatibilité maximale au moment de la rédaction, de les rendre variables.

Pour arrêter de polluer l'espace de noms global, les propriétés d'un objet.

var constants = {
   'constant1': 'value1',
   'constant2': 'value2'
};

Vous pouvez alors y accéder comme constants.constant1.


De nombreux navigateurs implémentations de JavaScript ont des constantes, utilisé avec const. Voir const Compatibilité du Navigateur sur MDN pour la dernière prise en charge du navigateur


Vous pouvez également modifier le premier exemple, à l'aide de defineProperty() ou de ses amis et de faire de l' writable bien false. Cela signifie que la variable ne peut pas être changé, comme une constante.

7voto

Esteban Araya Points 12496

Il n'y a pas de constantes en JavaScript, mais pour déclarer un littéral, il suffit de:

 var myString = "Hello World";
 

Je ne suis pas sûr de ce que vous voulez dire par les stocker dans un fichier de ressources; ce n'est pas un concept JavaScript.

5voto

MattC Points 478

Êtes-vous à l'aide de JQuery? Voulez-vous utiliser les constantes dans plusieurs fichiers javascript? Alors lisez la suite. (C'est ma réponse pour une JQuery question)

Il y a une pratique jQuery méthode appelée "getScript'. Assurez-vous d'utiliser le même chemin d'accès que vous le feriez si l'accès au fichier à partir de votre code html/jsp/etc fichiers (c'est à dire le chemin n'est PAS par rapport à l'endroit où vous placez le getScript méthode, mais plutôt par rapport à votre chemin d'accès au domaine). Par exemple, pour une application à localhost:8080/myDomain:

$(document).ready(function() {
  $.getScript('/myDomain/myScriptsDir/constants.js');
  ...

alors, si vous avez cela dans un fichier appelé constants.js:

var jsEnum = { //not really an enum, just an object that serves a similar purpose
  FOO : "foofoo",
  BAR : "barbar",
}

Vous pouvez à présent imprimer 'foofoo" avec

jsEnum.FOO

3voto

Byaxy Points 138

Eh bien, vous pouvez le faire comme suit:

 (function() {
    var localByaka;
    Object.defineProperty(window, 'Byaka', {
        get: function() {
            return localByaka;
        },
        set: function(val) {
            localByaka = window.Byaka || val;
        }
    });
}());
window.Byaka = "foo"; //set constant
window.Byaka = "bar"; // try resetting it for shits and giggles
window.Byaka; // will allways return foo!
 

Si vous procédez comme ci-dessus dans l'étendue globale, ce sera une constante vraie, car vous ne pouvez pas écraser l'objet window.

0voto

Byaxy Points 138

J'ai créé une bibliothèque basée sur ma réponse d'aperçu pour créer des constantes et des objets immuables en javascript. C'est toujours la version 0.2 mais ça fait bien l'affaire. http://beckafly.github.io/insulatejs

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X