Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   code review, интересуют альтернативные решения (https://javascript.ru/forum/project/70320-code-review-interesuyut-alternativnye-resheniya.html)

DynkanMaclaud 27.08.2017 14:39

code review, интересуют альтернативные решения
 
Всем привет, имеется следующий код, интересуют ваши варианты, особый интерес представляет возможность написания его по спеке ES6 ...
const arr = [];
const Number = 60;
for (let i=0; i<=60; i++) {
  arr.push(i);
};


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

DynkanMaclaud 27.08.2017 14:43

const Number = 60;
const arr = Array(Number + 1).fill(0).map((item, index) => index);

такой так себе...

рони 27.08.2017 14:57

DynkanMaclaud,
const Number = 60;
const arr = Array.from({length:Number+1},(item, index) => index);

рони 27.08.2017 15:07

DynkanMaclaud,
const Number = 60;
const arr = Array.from(' '.repeat(Number+1),(item, index) => index);

DynkanMaclaud 27.08.2017 15:28

Цитата:

Сообщение от рони (Сообщение 462846)
DynkanMaclaud,
const Number = 60;
const arr = Array.from({length:Number+1},(item, index) => index);

const arr = Array.from(Array(Number+1),(item, index) => index);


Спасибо, суть понятна...

DynkanMaclaud 27.08.2017 15:52

рони,
Но без инициализации, этот код работает ...

рони 27.08.2017 16:10

DynkanMaclaud,
ок, видимо осмотрелся.

Nexus 28.08.2017 17:44

Прошу прощения за вопрос, но изменять значение константы это нормальное... "явление"?

рони 28.08.2017 17:52

Nexus,
встречный вопрос: где изменение константы?

Nexus 28.08.2017 17:58

Цитата:

Сообщение от рони (Сообщение 462960)
Nexus,
встречный вопрос: где изменение константы?

Первый комментарий темы.
const arr = [];
const Number = 60;
for (let i=0; i<=60; i++) {
  arr.push(i);
};

В первой строке объявляется константа arr, которой присваивается пустой массив.
В 4-й константа заполняется, фактически её значение изменяется.

рони 28.08.2017 18:03

Nexus,
хром молчит, а как правильнее не знаю.

Alexandroppolus 29.08.2017 09:27

Nexus,

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

-----------
а вообще, вариант в стартовом посте самый быстрый. Но выглядит, конечно, совсем не по хипстерски.

DynkanMaclaud 29.08.2017 09:30

Nexus,
Выписка из книги Кайла Симпсона: "ES6 и не только",
Цитата:

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

Nexus 29.08.2017 09:36

Alexandroppolus, спасибо за разъяснение, что массив/объект константы можно модифицировать я понял, но это как-то странно/неправильно по-моему.

j0hnik 29.08.2017 11:51

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


Часовой пояс GMT +3, время: 17:22.