Как объявить строковые константы в JavaScript?

Я хочу объявить строковые константы в JavaScript.

Есть ли способ сделать это?

Ответ 1

Многие реализации браузеров (и Node) имеют константы, используемые с const.

const SOME_VALUE = "Your string";

Этот const означает, что вы не можете переназначить его на любое другое значение.

Проверьте заметки о совместимости, чтобы узнать, поддерживаются ли ваши целевые браузеры.

В качестве альтернативы вы также можете изменить первый пример, используя defineProperty() или своих друзей и создав свойство writable false. Это будет означать, что содержимое переменной не может быть изменено, как константа.

Ответ 2

В JavaScript нет констант, но для объявления литерала все, что вам нужно сделать, это:

var myString = "Hello World";

Я не уверен, что вы имеете в виду, сохраняя их в файле ресурсов; что это не концепция JavaScript.

Ответ 3

Используете ли вы JQuery? Вы хотите использовать константы в нескольких файлах javascript? Тогда читайте дальше. (Это мой ответ для связанного с этим вопроса JQuery)

Существует удобный метод jQuery, называемый 'getScript'. Убедитесь, что вы используете тот же относительный путь, что и при доступе к файлу из файлов html/jsp/etc (т.е. Путь НЕ относится к тому, где вы размещаете метод getScript, но вместо этого по отношению к вашему пути к домену). Например, для приложения на localhost: 8080/myDomain:

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

то, если у вас есть это в файле с именем constants.js:

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

Теперь вы можете распечатать 'foofoo' с помощью

jsEnum.FOO

Ответ 5

Ну, вы можете сделать это так:

(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!

Если вы сделаете это как указано выше в глобальной области видимости, это будет истинная константа, потому что вы не можете перезаписать объект окна.

Я создал библиотеку для создания констант и неизменяемых объектов в javascript. Его еще версия 0.2, но это трюк красиво. http://beckafly.github.io/insulatejs

Ответ 6

Стандартная функция замораживания встроенного объекта может использоваться для замораживания объекта, содержащего константы.

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

В строгом режиме установка значений для неизменяемого объекта вызывает TypeError. Для получения дополнительной информации см. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze

Ответ 7

Запуск ECMAScript 2015 (a.k.a ES6), вы можете использовать const

const constantString = 'Hello';

Но не все браузеры/серверы поддерживают это еще. Чтобы поддержать это, используйте библиотеку polyfill, такую ​​как Babel.

Ответ 8

Так много способов обмануть этого кота. Вы можете сделать это в закрытии. Этот код предоставит вам доступ к постоянным версиям, доступным только для чтения, с константами. Просто объявите их в общественном месте.

//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 = {}));

Использование:

console.log(MyAppName.Constants.FOO);       //prints 1
MyAppName.Constants.FOO = 2;
console.log(MyAppName.Constants.FOO);       //does not change - still prints 1

Ответ 9

Используйте глобальное пространство имен или глобальный объект, например Constants.

var Constants = {};

И используя функцию write функции defineObject, которая добавит все свойства к этому объекту и присвоит ему значение.

function createConstant (prop, value) {
    Object.defineProperty(Constants , prop, {
      value: value,
      writable: false
   });
};

Ответ 10

Вы можете использовать метод замораживания объекта Object для создания константы. Например:

var configObj ={timeOut :36000};
Object.freeze(configObj);

Таким образом вы не можете изменить configObj.

Ответ 11

Просто объявляйте переменную за пределами любой функции js. Такие переменные будут глобальными.