Да, это влияет на производительность.Каждый раз, когда запускается $(selector)
, должен быть создан новый объект jQuery.Тем не менее, воздействие будет довольно незначительным, если вы не запустите огромное количество из них за короткий промежуток времени.Например:
const t1 = performance.now();
for (let i = 0; i < 300000; i++) {
const html = $('div').html();
}
const t2 = performance.now();
const div = $('div');
for (let i = 0; i < 300000; i++) {
const html = div.html();
}
const t3 = performance.now();
console.log(t2 - t1);
console.log(t3 - t2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>foo</div>
Создание объекта jQuery занимает ненулевое количество процессорного времени, но оно все же не так много.Если вам do нужно беспокоиться об эффективности, вы можете просто использовать вместо этого стандартный Javascript, который будет иметь дополнительное улучшение по сравнению с методами jQuery (даже по сравнению с сохранением ссылки на объект jQuery).
const t1 = performance.now();
for (let i = 0; i < 300000; i++) {
const html = $('div').html();
}
const t2 = performance.now();
const $div = $('div');
for (let i = 0; i < 300000; i++) {
const html = $div.html();
}
const t3 = performance.now();
for (let i = 0; i < 300000; i++) {
const html = document.querySelector('div').innerHTML;
}
const t4 = performance.now();
const div = document.querySelector('div')
for (let i = 0; i < 300000; i++) {
const html = div.innerHTML;
}
const t5 = performance.now();
console.log('jQuery re-selection', t2 - t1);
console.log('jQuery saving reference', t3 - t2);
console.log('vanilla re-selection', t4 - t3);
console.log('vanilla saving reference', t5 - t4);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>foo</div>