Vladislav
Там будет невидимый тег а
Vladislav
На всю ширину и высоту
RA-TA-TATA
нет, но зачем?
просто пытаюсь разобраться, как так var apples 2 раза
RA-TA-TATA
в C# так нельзя
Vladislav
И нам уже придется менять скрипт
Demetrio
просто пытаюсь разобраться, как так var apples 2 раза
лучше var вообще никогда не использовать
RA-TA-TATA
лучше var вообще никогда не использовать
понимаю, но на счет var 2 раза
RA-TA-TATA
и одного и того же имени
Vladislav
Кинь статью где написано что обработчик трудозатратный
Arti 🦠
у тебя всплытие событий происходит от я до а
Vladislav
зачем ?
Всякое в проде бывает
Arti 🦠
где то на г можно поймать
Demetrio
300 это ладно, никто не заметит, а вот реальные таблицы бывают раз в 100 побольше
Arti 🦠
если конечно нет stoppropagation
Michail
понимаю, но на счет var 2 раза
Используй let тогда будет возникать ошибка
RA-TA-TATA
Используй let тогда будет возникать ошибка
да я понимаю, но в том плане, в жс разве так можно??
RA-TA-TATA
Как это работает?
RA-TA-TATA
var apples как бы глобальная и уже создана
RA-TA-TATA
в блоке if мы опять СОЗДАЕМ
RA-TA-TATA
var apples
Michail
да я понимаю, но в том плане, в жс разве так можно??
переменная присваеватся в обьект window
Demetrio
в блоке if мы опять СОЗДАЕМ
дело в том что интерпретатор ЖС--а работает в 2 прохода
Demetrio
при первом прохоже он собирает имена переменных и фунций
Demetrio
при втором проходе - исполняет
Demetrio
отсюда и возникает эффект "всплытия" который обсуждался выше
Michail
Через консоль можете посомтреть, когда Вы делаете через let то создается script-овая область видемости
RA-TA-TATA
Vladislav
Нода - отдельная среда
Demetrio
:D
Vladislav
В браузером жс события выполнены в стиле хуков
RA-TA-TATA
"особенность"
Ладно, понял)) странный же конечно жс пока что
Demetrio
тот же if() кстати в отличие от нормальных языков не создаёт область видимости
Demetrio
отдельная область видимости в ЖС-е создаётся только функцией
Demetrio
для const and let создаёт
они просто костыль который позволяет эту нелепую "особенность" обойти
Arti 🦠
=D
Arti 🦠
В браузером жс события выполнены в стиле хуков
Хорошо. Представь что у тебя обработчик создаёт массив на 300 айтемов.
Arti 🦠
и у тебя 100 таких обработчиков
Arti 🦠
каждый создаёт переменную которая ссылается на массив из 300 айтемов
Arti 🦠
Почему создаёт? Ссылается
в каждом обработчике есть строка типо const p = ['asdasd' * 100]
Vladislav
Ну, если в массиве объекты
Demetrio
Почему создаёт? Ссылается
fn handler(){ let items = [....300 штук ...] }
Vladislav
Вот опять, с чего ты взял что обработчики много жрут памяти?
Arti 🦠
let items - уникален для каждого обработчика
Arti 🦠
да потому что там 300 штук в массиве
Arti 🦠
и таких 500 штук
Vladislav
К чему ты клонишь?
Arti 🦠
и да. Замыкания ... если обработчики ссылаются на что либо из своей области видимости
Arti 🦠
Сборщик мусора - не зачистит это
Demetrio
Вот опять, с чего ты взял что обработчики много жрут памяти?
да не жрут они много памяти, речь о том что этих обработчиков МНОГО, и каждый из нах жрёт по чуть-чуть, а в сумме до десятков лишних килобайт.
Vladislav
Сборщик мусора - не зачистит это
Честно, не понимаю о чем ты
Demetrio
а дальше поясни к чему ты?
Vladislav
а дальше поясни к чему ты?
micro optimization doesn't matter
stay
Ты не путац микро отпимизации и мегабайты памяти
Vladislav
Вот опять, с чего ты взял что обработчики много жрут памяти?
Vladislav
Если судить по этому, то зачем ставить фреймворки
Vladislav
Там же столько оаерхеда
Demetrio
Там же столько оаерхеда
это точно, особенно на сервере...
Arti 🦠
можно и не удалять обработчик
stay
Вот опять, с чего ты взял что обработчики много жрут памяти?
Потому что навесить 10000 неиспользуемых хендлеров это самый верный способ потратить всю оперативку пользователя
stay
https://v8.dev/blog/tracing-js-dom
Vladislav
Пагинацию не зря придумали
stay
Пагинацию не зря придумали
И пагинация будет перезагружать страничку?
stay
Или ты при каждой прокрутке будеть все обработчики тречить?
Vladislav
Мы рассматриваем в браузере
Vladislav
Или ты при каждой прокрутке будеть все обработчики тречить?
А причем прокрутка к тому же клику, например
stay
А причем прокрутка к тому же клику, например
Я к тому, что тогда , при переходе на следующую страничку таблицы, тебе нужно будет отвязать все обработчики на предыдущей. И привязать к новой
stay
И так каждый раз. Или повесть 1 обработчики и не думать об этом больше никогда
Arti 🦠
и мусорщик сам почистит
stay
можно просто удалить DOM узлы которые ссылаются на эти обработчики
Да как угодно удаляй и навешивай. Все равно придется удалить и навешивать