Como declarar constantes de cordas em JavaScript? [duplicado]

[[2] esta pergunta já tem uma resposta aqui:

  • Há constantes no JavaScript? 33 respostas

quero declarar constantes de cordas em JavaScript.

Há alguma maneira de fazer isso?

Author: alex, 2011-04-26

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.

 113
Author: alex, 2016-04-08 07:24:39

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.

 8
Author: Esteban Araya, 2015-06-22 04:03:04
Estás a usar JQuery? Deseja usar as constantes em vários ficheiros javascript? Então lê. (Esta é a minha resposta para uma pergunta relacionada JQuery)

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
 5
Author: MattC, 2014-01-13 23:56:53

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 .

 4
Author: Simon, 2015-06-26 16:58:14
Podes fazê-lo assim.
(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/insulatejs
 2
Author: Beckafly, 2014-11-19 23:29:27

A 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

 2
Author: Mohit, 2014-12-22 07:32:59

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.

 2
Author: Ryan Rho, 2015-09-08 08:46:26
Tantas maneiras de esfolar este gato. Você pode fazer isso em um encerramento. Este código dar-lhe-á uma forma de ter constantes apenas para leitura e com nomes. Declara - os na área pública.
//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
 0
Author: Simon, 2014-10-03 17:24:24

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
   });
};
 0
Author: Sandip Nirmal, 2015-09-09 09:23:05

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.

 -1
Author: Rubi saini, 2015-08-01 18:52:00

Declara apenas a variável fora do âmbito de qualquer função js. Tais variáveis serão globais.

 -4
Author: Lloyd, 2011-04-26 04:49:14