Разделитель разрядов, быстрая очистка массива с сохранением ссылки и другие полезные фишки в JS. Сегодня я хотел бы немного расширить ваше знания о JavaScript. Приятного чтения :)
- Разделитель разрядов
- Самый быстрый способ перебрать массив
- Быстрая очистка массива с сохранением ссылки
- Оператор с запятой
Разделитель разрядов
Я задам лишь один вопрос: «Что будет выведено в консоль?»:
console.log(1_000 + 1_500);
Думаете, что произойдет конкатенация и в консоль выведется «1_0001_500»? Или же выведет ошибку?
На самом деле ответом будет являться число 2500
, но почему?
Всё просто, символ "_
" является разделителем для улучшения читабельности. Согласитесь, гораздо быстрее понять, что написано «один миллион», когда он выглядит так: 1_000_000
, а не так: 1000000
Самый быстрый способ перебрать массив
Какие способы перебора значений массива мы знаем? Цикл for
, for of
и forEach
. Но какой из них выбрать, если нам нужно перебрать массив из 1 000 000 000 значений самым быстрым способом? Ответ не столь очевиден.
Самым быстрым окажется цикл for
, но не простой, а реверсивный. А всё из-за того, что тот вычисляет размер массива лишь один раз при инициализации.
Быстрая очистка массива с сохранением ссылки
Какой самый быстрый способ очистить массив мы знаем? Разумеется — это присвоить массиву значение пустого массива []
, но тогда ссылка на этот массив изменится, а что если нам нужно её сохранить?
const array = [/*Какие-то данные*/];
array.length = 0; //[]
Всё, массив очищен, а ссылка сохранена.
P.S. Аналогичным способом можно заполнять массивы пустыми данными:
const array = [1, 2];
array.length = 4; //[1, 2, , ]
Оператор с запятой
Вновь простой вопрос, что будет выведено в консоль?
console.log((2,5 - 2) * 2);
Совершенно верно, 6
. Но почему?
Всё дело в том, что тут написано не число два с половиной, а число два, запятая, число 5. Что делает запятая? Она выполняет слева направо каждый из операндов и возвращает значение последнего, в данном примере число 5.
На этом у меня всё, спасибо за внимание!
P. S Заметили ли вы, что в пункте «Разделитель разрядов» было написано сто тысяч, а не миллион? :)