Como declarar constantes de cordas em JavaScript? [duplicado]
- Há constantes no JavaScript? 33 respostas
quero declarar constantes de cordas em JavaScript.
Há alguma maneira de fazer isso?11 answers
Muitas implementações de navegadores (e nó) têm constantes, usadas com const
.
const SOME_VALUE = "Your string";
Isto significa que não podes transferi-lo para outro valor.
Verifique as notas de compatibilidadepara ver se os seus navegadores visados são suportados.
Em alternativa, poderá também modificar o primeiro exemplo, usando defineProperty()
ou seus amigos e fazer a propriedade writable
. Isto significa que o conteúdo da variável não pode ser alterado, como um constante.
Não há constantes em JavaScript, mas para declarar um literal tudo o que você tem que fazer é:
var myString = "Hello World";
Não sei o que você quer dizer com armazená-los em um arquivo de recursos; isso não é um conceito de JavaScript.
Existe um método jQuery útil chamado 'getScript'. Certifique-se de que utiliza a mesma localização relativa que faria se acedesse ao ficheiro a partir dos seus ficheiros html/jsp/etc (ou seja, a localização não é relativa ao local onde coloca o método getScript, mas sim relativa ao seu local do domínio). Por exemplo, para um aplicativo em localhost: 8080/myDomain:
$(document).ready(function() {
$.getScript('/myDomain/myScriptsDir/constants.js');
...
Então, se tiver isto num ficheiro chamado constantes.js:
var jsEnum = { //not really an enum, just an object that serves a similar purpose
FOO : "foofoo",
BAR : "barbar",
}
Agora pode imprimir 'foofoo' com
jsEnum.FOO
Claro que esta não era uma opção quando o OP apresentou a pergunta, mas o ECMAScript 6 agora também permite constantes através da palavra-chave "const":
Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const
Pode ver ECMAScript 6 adopção aqui .
(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!
Se fizer isto como acima no âmbito global, esta será uma verdadeira constante, porque não pode sobrepor o objecto da janela.
Criei uma biblioteca para criar constantes e objectos imutáveis em javascript. Ainda é a versão 0.2, mas faz o truque bem. http://beckafly.github.io/insulatejsA função de congelamento padrão de um objecto incorporado pode ser usada para congelar um objecto que contenha 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
Em modo estrito, a definição de valores em objectos imutáveis lança o erro tipográfico. Para mais detalhes, veja https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze
A partir do ECMAScript 2015( T. c. p.ES6), pode usar const
const constantString = 'Hello';
Mas nem todos os navegadores / servidores suportam isto ainda. Para suportar isso, use uma biblioteca polifill como Babel.
//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 = {}));
Utilização:
console.log(MyAppName.Constants.FOO); //prints 1
MyAppName.Constants.FOO = 2;
console.log(MyAppName.Constants.FOO); //does not change - still prints 1
Usar o espaço de nomes global ou um objecto global como constantes.
var Constants = {};
E usando a função de escrita defineObject que irá adicionar todas as propriedades a esse objecto e atribuir-lhe valor.
function createConstant (prop, value) {
Object.defineProperty(Constants , prop, {
value: value,
writable: false
});
};
Pode usar o método de congelamento do objecto para criar uma constante. Por exemplo:
var configObj ={timeOut :36000};
Object.freeze(configObj);
Desta forma não pode alterar o configuobj.
Declara apenas a variável fora do âmbito de qualquer função js. Tais variáveis serão globais.