Считается такое кешированием в JS
Будет ли правильным, если document сначала записать в переменную, а потом обращаться к ней. Типа вот так:
let doc = document; let title = doc.querySelectorAll('h2'); doc.querySelector('.class').innerHTML = 'Hello World'; doc.querySelector('.test').addEventListener('click', ...) Вроде где то в видео на ютубе услышал, а может приснилось, что это можно считать как кеширование и типа это значительно уменьшает нагрузки на браузер. Или это неправильно? |
Цитата:
обращение к doc слегка быстрее, поскольку он в текущем скоупе, а за document надо ходить по всей цепочке скоупов на самый верх. однако первый же querySelector делает такую оптимизацию смехотворной (поскольку в разы дольше обращения к переменной), не говоря уж об изменении DOM |
Я правильно понял что этим можно пренебречь и не заморачиваться, если после идёт querySelector и оставлять document.querySelector ?
Изменённый DOM не беру во внимание. Изначально всё прописано в HTML. |
MC-XOBAHCK,
если ты пишешь какую-то логику чисто на js и хочешь упороться и совсем всё оптимизировать, то да, вполне можно глобальные переменные в текущий скоуп подтянуть (особенно если к ним много обращений, внутри цикла, например). А если на фронте ты работаешь с DOM, то понятное дело такие оптимизации будут вообще незаметны на фоне операций с элементами. |
Alexandroppolus,
Спасибо за разъяснения, я суть понял - буду знать. А можно ещё спросить в этой теме такой вопрос: инпуты с тайпом нумбер, если мышкой на родные стрелочки инпута жать (изменять значения), то очень долго уходит сигнал на событие - секунды 2-3 пока скрипт отреагирует. Если стрелочками с клавиатуры (клавиши вверх-вниз) менять значения, то скрипт реагирует моментально на событие. Это так и есть с такими инпутами или это уже я в скрипте накосячил? |
MC-XOBAHCK,
почитайте "Выразительный JavaScript" автор на протяжении всей книги пытается раскрыть тему баланса между выразительность кода и скоростью, где стоит использовать абстракции, а где опереться на более фундаментальные вещи. (хотя между строк читается что топит больше за красоту) |
Цитата:
|
Цитата:
кеширование хорошо работает когда можно избежать многократного поиска одного и того же элемента документа сохранив на него ссылку (найдено поиском по форуму) |
Rise, хороший паттерн, буду пользоваться.
Единственное 9-ая строка в вашем коде, где querySelector объявлен как строка. В этом случае нельзя как и document объявить: let q = querySelector; , чтобы потом обращаться через точку d.q('h1') ? Или сокращение допустимо только как Вы написали? Я пробовал когда то подобное делать, но у меня что то не заработало и я бросил тогда эту затею и писал портянку полностью. |
MC-XOBAHCK,
d.q('#selector');//Обращение к методу "q" d[q]('#selector');//Обращение к методу "querySelector" из переменной "q" https://developer.mozilla.org/ru/doc...g_with_Objects |
Часовой пояс GMT +3, время: 11:02. |