Я проверил несколько итераций, чтобы проверить эффективность Document.querySelector
и Element.querySelector
.Почему Document.querySelector эффективнее Element.querySelector
Markup:
<form>
<input type="text" />
</form>
Сценарий:
запросов сDocument.querySelector
begin = performance.now();
var
i = 0,
iterations = 999999;
for (i; i < iterations; i++)
{
element = document.querySelector('[type="text"]');
}
end = performance.now();
firstResult = end - begin;
запросов сElement.querySelector
begin = performance.now();
var
i = 0,
iterations = 999999,
form = document.querySelector('form');
for (i; i < iterations; i++)
{
element = form.querySelector('[type="text"]');
}
end = performance.now();
secondResult = end - begin;
Вход:
console.log(firstResult); // 703.7450000001118
console.log(secondResult); // 1088.3349999999627
журнал удивительно для меня, потому что я думаю, что Element.querySelector
запрос только на узлах, который является потомком элемента и Document.querySelector
запроса на всех узлах текущий документ, не так ли?
Зачем нужен этот результат?
Если добавить 1000 одноуровневые узлы в форме, вы, вероятно, увидите производительность падения документа поиска уровня. –
Тест [здесь] (http://jsperf.com/document-vs-element-queryselectorall-performance/3) показывает, что ваше утверждение неверно – Tushar
Я не знаю ответа на ваш вопрос, или ваш хороший показатель, но разница в 300 микросекунд за звонок вряд ли кажется чем-то, о чем стоит беспокоиться в реальной жизни. –