| 
	| 
	
	| 
		
	| 
			
			 
			
				23.07.2018, 20:29
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 06.08.2017 
						Сообщений: 473
					 
		
 |  |  
	| 
				Считается такое кешированием в JS
			 Будет ли правильным, если document сначала записать в переменную, а потом обращаться к ней. Типа вот так: 
let doc = document;
let title = doc.querySelectorAll('h2');
doc.querySelector('.class').innerHTML = 'Hello World';
doc.querySelector('.test').addEventListener('click', ...)
Вроде где то в видео на ютубе услышал, а может приснилось, что это можно считать как кеширование и типа это значительно уменьшает нагрузки на браузер. 
Или это неправильно?			 Последний раз редактировалось MC-XOBAHCK, 23.07.2018 в 20:44.
 |  |  
	| 
		
	| 
			
			 
			
				23.07.2018, 20:59
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 25.10.2016 
						Сообщений: 1,013
					 
		
 |  |  
	| 
	
 
	| Сообщение от MC-XOBAHCK |  
	| значительно уменьшает нагрузки на браузер. |  
	
 если и уменьшает, то на копейки 
обращение к doc  слегка быстрее, поскольку он в текущем скоупе, а за document  надо ходить по всей цепочке скоупов на самый верх.
 
однако первый же querySelector делает такую оптимизацию смехотворной (поскольку в разы дольше обращения к переменной), не говоря уж об изменении DOM |  |  
	| 
		
	| 
			
			 
			
				23.07.2018, 21:18
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 06.08.2017 
						Сообщений: 473
					 
		
 |  |  
	| Я правильно понял что этим можно пренебречь и не заморачиваться, если после идёт querySelector и оставлять document.querySelector ?Изменённый DOM не беру во внимание. Изначально всё прописано в HTML.
 |  |  
	| 
		
	| 
			
			 
			
				23.07.2018, 21:43
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 25.10.2016 
						Сообщений: 1,013
					 
		
 |  |  
	| MC-XOBAHCK,если ты пишешь какую-то логику чисто на js и хочешь упороться и совсем всё оптимизировать, то да, вполне можно глобальные переменные в текущий скоуп подтянуть (особенно если к ним много обращений, внутри цикла, например).
 
 А если на фронте ты работаешь с DOM, то понятное дело такие оптимизации будут вообще незаметны на фоне операций с элементами.
 |  |  
	| 
		
	| 
			
			 
			
				23.07.2018, 22:26
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 06.08.2017 
						Сообщений: 473
					 
		
 |  |  
	| Alexandroppolus,Спасибо за разъяснения, я суть понял - буду знать.
 
 А можно ещё спросить в этой теме такой вопрос:
 инпуты с тайпом нумбер, если мышкой на родные стрелочки инпута жать (изменять значения), то очень долго уходит сигнал на событие - секунды 2-3 пока скрипт отреагирует.
 Если стрелочками с клавиатуры (клавиши вверх-вниз) менять значения, то скрипт реагирует моментально на событие.
 Это так и есть с такими инпутами или это уже я в скрипте накосячил?
 |  |  
	| 
		
	| 
			
			 
			
				23.07.2018, 22:49
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 01.12.2016 
						Сообщений: 3,650
					 
		
 |  |  
	| MC-XOBAHCK,почитайте "Выразительный JavaScript" автор на протяжении всей книги пытается раскрыть тему баланса между выразительность кода и скоростью, где стоит использовать абстракции, а где опереться на более фундаментальные вещи. (хотя между строк читается что топит больше за красоту)
 |  |  
	| 
		
	| 
			
			 
			
				23.07.2018, 23:45
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 06.08.2017 
						Сообщений: 473
					 
		
 |  |  
	| 
	
 
	| Сообщение от j0hnik   |  
	| почитайте "Выразительный JavaScript" |  
	
 Если я ту книгу загуглил, думаю за пару дней прочту - там немного и почти весь материал что есть в этой книге я уже знаю. |  |  
	| 
		
	| 
			
			 
			
				24.07.2018, 11:41
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 07.03.2011 
						Сообщений: 1,141
					 
		
 |  |  
	| 
	
 
	| Цитата: |  
	| Будет ли правильным, если document сначала записать в переменную, а потом обращаться к ней. Типа вот так: копировать в буферпоказать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки
 1
 let doc = document;
 |  
	
 Допустимым значением будет. т.е. код будет работать без ошибок. Но смысла в таком кешировании практически 0. 
кеширование хорошо работает когда можно избежать многократного поиска одного и того же элемента документа сохранив на него ссылку (найдено поиском по форуму) |  |  
	| 
		
	| 
			
			 
			
				24.07.2018, 14:16
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 06.08.2017 
						Сообщений: 473
					 
		
 |  |  
	| Rise, хороший паттерн, буду пользоваться.Единственное 9-ая строка в вашем коде, где querySelector объявлен как строка. В этом случае нельзя как и document объявить:
 let q = querySelector;
 , чтобы потом обращаться через точку d.q('h1') ? Или сокращение допустимо только как Вы написали?
 Я пробовал когда то подобное делать, но у меня что то не заработало и я бросил тогда эту затею и писал портянку полностью.
 |  |  |  |