Comment déclarer les constantes de chaîne dans JavaScript? [dupliquer]
cette question a déjà une réponse ici:
- y a-t-il des constantes en JavaScript? 33 réponses
je veux déclarer les constantes de chaîne en JavaScript.
y a-t-il un moyen de le faire?
11 réponses
beaucoup d'implémentations de navigateurs (et de noeuds) ont des constantes, utilisées avec const
.
const SOME_VALUE = "Your string";
ce const
signifie que vous ne pouvez pas le réassigner à une autre valeur.
cochez la case notes de compatibilité pour voir si vos navigateurs ciblés sont pris en charge.
vous pouvez aussi modifier le premier exemple en utilisant defineProperty()
ou ses amis et faire le writable
bien false
. Cela signifie que la variable ne peut pas être changé, comme une constante.
il n'y a pas de constantes dans JavaScript, mais pour déclarer un littéral tout ce que vous avez à faire est:
var myString = "Hello World";
Je ne suis pas sûr de ce que vous voulez dire par les stocker dans un fichier ressource; ce n'est pas un concept JavaScript.
utilisez-vous JQuery? Voulez-vous utiliser les constantes dans plusieurs fichiers javascript? Alors lisez la suite. (C'est ma réponse pour une JQuery question)
il existe une méthode jQuery très pratique appelée 'getScript'. Assurez-vous d'utiliser le même chemin relatif que si vous accédiez au fichier à partir de vos fichiers html/jsp/etc (c.-à-d. que le chemin N'est pas relatif à l'endroit où vous placez la méthode getScript, mais plutôt relatif à votre chemin de domaine). Par exemple, pour une application à localhost: 8080 / myDomain:
$(document).ready(function() {
$.getScript('/myDomain/myScriptsDir/constants.js');
...
alors, si vous avez ceci dans un fichier appelé constantes.js:
var jsEnum = { //not really an enum, just an object that serves a similar purpose
FOO : "foofoo",
BAR : "barbar",
}
vous pouvez maintenant imprimer "foofoo" avec
jsEnum.FOO
bien sûr, ce N'était pas une option lorsque L'OP a soumis la question, mais ECMAScript 6 permet maintenant aussi les constantes par le biais du mot-clé "const":
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const
vous pouvez voir ECMAScript 6 adoption ici .
Eh bien, vous pouvez le faire comme ça:
(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 faites ceci comme ci-dessus dans la portée globale ce sera une vraie constante, parce que vous ne pouvez pas écraser l'objet window.
j'ai créé une bibliothèque pour créer des constantes et des objets immuables en javascript. Sa version 0.2 mais il fait le tour bien. http://beckafly.github.io/insulatejs
fonction de gel Standard de l'objet incorporé peut être utilisé pour geler un objet contenant des constantes.
var obj = {
constant_1 : 'value_1'
};
Object.freeze(obj);
obj.constant_1 = 'value_2'; //Silently does nothing
obj.constant_2 = 'value_3'; //Silently does nothing
en mode strict, le réglage des valeurs sur l'objet immuable lance TypeError. Pour en savoir plus, lisez . https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze
Starting ECMAScript 2015(A. K. a ES6) , vous pouvez utiliser const
const constantString = 'Hello';
mais ce n'est pas encore le cas de tous les navigateurs/serveurs. Pour cela, utilisez une bibliothèque en polyfill comme Babel.
il y a tellement de façons de dépecer ce chat. Vous pouvez le faire dans une clôture. Ce code vous donnera une façon d'avoir des constantes en lecture seule et en namespace. Il suffit de les déclarer dans la zone publique .
//Namespaced Constants
var MyAppName;
//MyAppName Namespace
(function (MyAppName) {
//MyAppName.Constants Namespace
(function (Constants) {
//Private
function createConstant(name, val) {
Object.defineProperty(MyAppName.Constants, name, {
value: val,
writable: false
});
}
//Public
Constants.FOO = createConstant("FOO", 1);
Constants.FOO2 = createConstant("FOO2", 1);
MyAppName.Constants = Constants;
})(MyAppName.Constants || (MyAppName.Constants = {}));
})(MyAppName || (MyAppName = {}));
Utilisation:
console.log(MyAppName.Constants.FOO); //prints 1
MyAppName.Constants.FOO = 2;
console.log(MyAppName.Constants.FOO); //does not change - still prints 1
utilise un espace de noms global ou un objet global comme des constantes.
var Constants = {};
et en utilisant la fonction d'écriture de defineObject qui ajoutera toutes les propriétés à cet objet et lui assignera de la valeur.
function createConstant (prop, value) {
Object.defineProperty(Constants , prop, {
value: value,
writable: false
});
};
vous pouvez utiliser la méthode de gel de L'objet pour créer une constante. Par exemple:
var configObj ={timeOut :36000};
Object.freeze(configObj);
de cette façon, vous ne pouvez pas modifier la configObj.
il suffit de déclarer variable en dehors de la portée de toute fonction js. Ces variables seront globales.