Почему короткий скрипт работает медленнее длинного?

Всем привет, изучаю JS, есть 2 кода, делающие одно и тоже (табы), один в несколько раз длиннее, содержит больше функций, обращений к DOM и т.д., но выполняется намного быстрее. Какой код всё-таки лучше, или оба хрень? С чем связана такая разница в скорости?
1 код

let tabsWrapper = document.querySelector('#tabs'),
	tabs = tabsWrapper.querySelectorAll('.tab'),
	tabContent = tabsWrapper.querySelectorAll('.tabContent');

tabs.forEach( function(a, b) {
	a.addEventListener('click', function() {
		tabs.forEach((item) => item.classList.remove('whiteborder'));
		a.classList.add('whiteborder');
		tabContent.forEach((item) => item.classList.remove('show'));
		for (let i = b; i < tabContent.length; i++) {
			tabContent[i].classList.add('show');
			break;
		};
	});
});


и второй код

var tab;
var tabContent;

window.onload = function(){
	tabContent = document.getElementsByClassName('tabContent');
	tab = document.getElementsByClassName('tab');
	hideTabsContent(1);	
}

function hideTabsContent(a){
	for(var i = a; i < tabContent.length; i++){
		tabContent[i].classList.remove('show');
		tabContent[i].classList.add('hide');
		tab[i].classList.remove('whiteborder');		
	}	
}

document.getElementById('tabs').onclick = function(event){
	var target = event.target;
	if(target.className == 'tab'){
		for(var i = 0; i < tab.length; i++){
			if(target == tab[i]){
				showTabsContent(i);
				break;
			}
		}
	}
}

function showTabsContent(b){
	if(tabContent[b].classList.contains('hide')){
		hideTabsContent(0);
		tab[b].classList.add('whiteborder');
		tabContent[b].classList.remove('hide');
		tabContent[b].classList.add('show');
	}
}


Бенчмарк
spoiler

5d271fdebb5ba311781890.jpeg
  • Вопрос задан
  • 135 просмотров
Решения вопроса 2
senover
@senover
Vue.js developer
Буду краток:
1. querySelectorAll
2. forEach (да еще и вложенные)
Ответ написан
SagePtr
@SagePtr
Еда - это святое
Ещё по той причине, что во втором случае мы вешаем только один обработчик на все табы.
В первом случае - на каждый таб плодим отдельный обработчик, что накладные расходы, если табов много.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы