2014-11-19 1 views
5

Чтения и мастерить с новыми возможностями, предлагаемых ECMAScript 6.удалить или переопределить константные переменные в JavaScript Harmony/ECMAScript 6

Новым «Const» заявлением для записи постоянных переменных является отличной функцией, которая добавляет функции в уже интересное обновление.

Переменная создается как доступная только для чтения, и как только она заявлена, ее нельзя переопределить.

РЕДАКТОРА: Возникла следующая проблема, например, при тестировании кода на консоли. Запуск скрипта, содержащего определение const дважды, приведет к ошибке, нарушая выполнение.

Что делать, если я хочу высвободить это ключевое слово? Есть ли способ удалить или удалить переменную?

Я прочитал в this post, что это на самом деле проблема, которая влияет на заявление вар, а также, потому что среда, в которой создаются переменные отличаются от многих уровня абстракции.

Как ECMAScript 6 намерен решить эту проблему?

+0

Нет абсолютно никаких оснований для отмены/удаления константы, поэтому в ES6 это невозможно. Почему вы хотите это сделать? – Bergi

+1

Если вы хотите изменить его, почему бы вам объявить его 'const' в первую очередь? ECMAScript 6 не предназначен для решения этой проблемы, поскольку 'const' является' const'. Вы можете объявить другую переменную с тем же именем во внутренней области, если хотите, используя 'let'. –

+1

, например, если я тестирую некоторый код на консоли, объявляя const в два раза (т. Е. Запуская сценарий еще раз), выдает ошибку, которая может привести к обновлению страницы, теряя все сделанные вами кешированные изменения. На самом деле это причина, по которой я столкнулся с этим вопросом. – Moleskine

ответ

4

Невозможно переопределить переменные, объявленные с использованием const.

Однако const является блочным. Для решения этой проблемы вы описываете, при тестировании какой-то код в консоли все, что вы должны сделать, это обернуть сценарий в { и }:

{ const x = 1; } 
{ const x = 2; } 

Обратите внимание, что многие браузеры, которые уже поддерживают const ключевое слово пока не поддерживает константы с блочным диапазоном, поэтому приведенный выше пример не будет работать в Chrome и Firefox (см. Kangax's compatibility table).

+0

Я вижу, так что вы говорите, что это невозможно, но ответ - это определение, верно? Имеет смысл. Похоже, они прилагают все усилия, чтобы решить проблему, как с введением let и const. – Moleskine

-3

FYI - const a = {}; var b = new a; a = 33; Я только что изменил константу 'a' назад к var.

+0

извините ... const work = {}; var dd = work; dd = 99; work = 22; он возвращает 22 и должен возвращать то, что вы когда-либо устанавливали, но по умолчанию это будет неопределенный объект. – davidLeak

+1

Невозможно назначить новое значение 'const'. В этом весь смысл иметь 'const'. –