Anonymous
я запускал и что
Anonymous
что не понятно тебе
stay
Я вот так и не понял. Я знаю, что У Array.length есть ограничение в 2**32-1 , но я все еще не понимаю почему присвоение
a[999999999] = 123
ведет себя именно так
Сергей
Ага
Anton
потому что length, по сути, отдельная сущность
Anton
там в статье написано, что As you can see, the length property does not necessarily indicate the number of defined values in the array
Paul
Anton
и так оно и есть: если вы положите 2 элемента в массив на позиции 9 и 10, то длина массива у вас не будет равна двум
stay
Так, это понятно. Length возвращает индект последнего элемента-1
Paul
Ты пытаешься запихнуть в него элемент с индексом больше 32 бит, но он не может поменять length
Paul
Поэтому элемент с таким индексом он добавил, а length не тронул
Anonymous
var i = 999;
var arr = [];
arr[9] = 9;
console.log(arr[9])
arr[i] = 321;
=> [ <9 empty items>, 9, <989 empty items>, 321 ]
Paul
Но почему там length становится undefined - хз
Сергей
Окей, а какой тогда самый верный способ узнать длину массива, если length не даёт в некоторых случаях полезной информации?
stay
Paul
stay
stay
Paul
Paul
А, да
Paul
ВСе ок, я слепой
Paul
андефайнд это результат операции в консольке
Anonymous
массив заполняет пустоту доходя до i
stay
Да да
Paul
Ты пытаешься запихнуть в него элемент с индексом больше 32 бит, но он не может поменять length
Paul
Поэтому элемент с таким индексом он добавил, а length не тронул
Paul
Тогда это в силе
stay
Странно, что он просто не выдает RangeError, как например при new Array(2**32)
Paul
new array это конструктор
Paul
А тут ты просто стучишься в свойство объекта
Paul
Ерроры не предусмотрены
Сергей
В общем выходит, что синтаксис arr[index] такой же сломаный, как и многие другие части js и для корректной работы лучше использовать Array.prototype.push()
Paul
Не сломаный, он такой какой есть
Paul
Но класть что-то в массив по ключу — вообще стремная идея
Paul
immutability и все дела
Anonymous
javascript на самом деле умный
он понимает такое
var arr = [1, 2, 3, ]; // запятая в конце заметьте
arr.length => 3
var arr = [1,2,3,,,] // несколько запятых заполняется undefined
arr.length => 5
Syntax Highlight Bot
stay
Anton
ну у меня браузер упал, когда я пытался заполнить массив данными а-ля "значение элемента массива равно индексу элемента массива"
Anton
зато зимой в Сибири можно запустить такой скрипт на телефоне и согреться :)
stay
stay
Фантастика. Выкинул ошибку, но значение присвоил 🤔
Anton
Anonymous
Anton
забавно читать редкие части документации (а я думал оно true возвращает)
Anton
а он вроде и не заменил
stay
Anton
not_bad.jpg
Danila
Ребят как можно захешировать названия классов в html и css? Желательно через webpack
Anonymous
индекс с 0))) не заменяет он ничего
stay
Anonymous
Danila
Paul
CSS модули не привязаны к реакту
Danila
Pug + sass
JK
настрой вебпак.
JK
или любой сборщик
Danila
настрой вебпак.
Вот не как не могу нагуглить. Если не сложно накидай простенький пример
JK
дак в посте выше есть пример, css-loader твоя тема
Paul
https://github.com/css-modules/webpack-demo
Paul
Там в примерах реакт, но опять же, css modules работает и без него
Paul
Danila
Paul
Юзается также как и в реакте
Paul
pug хз, не работал с ним
JK
https://github.com/css-modules/postcss-modules#pug-ex-jade
Dubzer
Приветствую. У меня есть список нескольких элементов из HTMLCollection с одинаковым классом. Подскажите, как можно поменять класс всем элементам сразу?
Oleksii
[..].forEach(e=>e.class = "newClass");
?
Oleksii
но меня не слушай.. может есть способ получше:)
Dubzer
просто здесь в js какой-то странный фурыч этот... =)
Oleksii
ну возможно есть чето типа
$([...]).class("newClass")
Oleksii
но думаю он сделает то же самое. только это jsquery надо лепить. если не юзаеш
JK
.forEach na HTMLCollection не везде сработает