Как создать константу в javascript

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

теперь КАК ОБЫЧНО, IE не поддерживает ключ const so

const T = 10;

не работает.

Я мог бы создать свойство через __defineGetter__ и __defineSetter__ чтобы имитировать это, но , КАК ОБЫЧНО, IE не поддерживает этот синтаксис (IE 8 имеет Object.defineProperty но не работает над пользовательским объектом).

есть идеи?

5 ответов


"нет решения" - действительно самое безопасное решение. Прямо сейчас нет хорошего механизма для создания констант в Javascript, но если вы установите соглашение (все шапки для const), чтобы помочь идентифицировать их и не перезаписывать их самостоятельно, тогда ваши собственные константы будут в безопасности.

Если вы пишете публичную библиотеку и вас действительно беспокоит изменение значения, вы можете использовать закрытую переменную, доступную только для вашего собственного кода, управляя областью с помощью функция:

(function() {
    var MY_CONSTANT = 42;
    alert(MY_CONSTANT); // alerts "42"
    ...do other stuff in here...
})();
alert(MY_CONSTANT); // alerts "undefined" because MY_CONSTANT is out of scope here

если разработчик может прочитать значение в javascript, то этот разработчик может изменить это значение.



есть freeze () метод в Javascript, который можно использовать для создания фактических констант.

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

    var consts = {};                    // Object to store all constants
    consts.MY_CONSTANT= 6;
    Object.freeze(consts);              // Make the consts truly read only
    consts.MY_CONSTANT= 7;              // Trying to do this will give error

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

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

не идеально, конечно, но он должен работать.


старый вопрос, но в настоящее время вы можете просто использование:

const MY_CONST = 10;

С MDN:

объявление const создает ссылку только для чтения на значение. Это не означает, что значение, которое оно содержит, является неизменяемым, просто идентификатор переменной не может быть переназначен.

при поддержке все основные браузеры уже.