Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 28.08.2017, 18:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Nexus,
хром молчит, а как правильнее не знаю.
Ответить с цитированием
  #12 (permalink)  
Старый 29.08.2017, 09:27
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Nexus,

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

-----------
а вообще, вариант в стартовом посте самый быстрый. Но выглядит, конечно, совсем не по хипстерски.
Ответить с цитированием
  #13 (permalink)  
Старый 29.08.2017, 09:30
Аватар для DynkanMaclaud
Профессор
Отправить личное сообщение для DynkanMaclaud Посмотреть профиль Найти все сообщения от DynkanMaclaud
 
Регистрация: 08.08.2014
Сообщений: 261

Nexus,
Выписка из книги Кайла Симпсона: "ES6 и не только",
Цитата:
В случае констант ограничение накладывается не на их значение, а на операцию присваивания. Другими словами, значение оказывается неизменяемым не потому,что речь идет о константе, а из -за невозможности присваивания другого. Если значение комплексное, в случае массива или обьекта, оно допускает модификацию...

Последний раз редактировалось DynkanMaclaud, 29.08.2017 в 09:36.
Ответить с цитированием
  #14 (permalink)  
Старый 29.08.2017, 09:36
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

Alexandroppolus, спасибо за разъяснение, что массив/объект константы можно модифицировать я понял, но это как-то странно/неправильно по-моему.
Ответить с цитированием
  #15 (permalink)  
Старый 29.08.2017, 11:03
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Nexus,
для объектов есть такие методы Object.freeze() и Object.seal()
Ответить с цитированием
  #16 (permalink)  
Старый 29.08.2017, 11:51
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Где то на хабре обсуждалась эта проблема, нет нормальных констант в JS чтобы из значения были полностью, неизменными.
Ответить с цитированием
  #17 (permalink)  
Старый 29.08.2017, 15:45
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от j0hnik
нет нормальных констант в JS чтобы из значения были полностью, неизменными
Грамотно реализовать функцию deepFreeze, чтобы примитивные типы она пропускала, а объекты замораживала на всю глубину, и в сочетании с const получится нефиговая константа:
const arr = deepFreeze([1,2,3]);
Для полного экстаза функцию можно назвать define.
И const делать внутри функции и через eval выбрасывать в текущую область видимости...

upd: c const в eval похоже не получится, const по умолчанию в строгом режиме, а eval в строгом режиме не вводит новых переменных в текущую область видимости...

Последний раз редактировалось Rise, 29.08.2017 в 16:12.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Code review jQuery плагина PMaster Ваши сайты и скрипты 2 28.08.2016 12:41
Подскажите как лучше положить .xml документ в базу Гробовщик Серверные языки и технологии 4 02.09.2013 11:15
Функция парсинга строки в массив байт. B~Vladi Ваши сайты и скрипты 50 28.12.2011 16:16
прошу code review retif Prototype & script.aculo.us 3 29.07.2010 17:21
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37