с «новым» Object api вы можете сделать что-то вроде этого:
var obj = {};
Object.defineProperty(obj, 'CONSTANT', {
configurable: false
enumerable: true,
writable: false,
value: "your constant value"
});
посмотрите на это в Mozilla MDN для получения более подробной информации. Это не переменная первого уровня, так как она прикреплена к объекту, но если у вас есть область действия, вы можете присоединить ее к этому. this
тоже должно работать.
Так, например, выполнение этого в глобальной области действия объявит псевдо-константное значение в окне (что является очень плохой идеей, вы не должны объявлять глобальные переменные небрежно)
Object.defineProperty(this, 'constant', {
enumerable: true,
writable: false,
value: 7,
configurable: false
});
> constant
=> 7
> constant = 5
=> 7
примечание: назначение вернет вам назначенное значение в консоли, но значение переменной не изменится