好的,我想我知道答案,希望确认一下.所以我有一个只使用过一次的选择器,但是它被用在一个多次调用的函数中.从性能的角度来看,因为每次调用函数时都会重新搜索该选择器,所以缓存选择器可能(虽然稍微好一点)?
换句话说,下面……
function testFunction() {
alert($("#input").val())
}
$("#a").click(function() {
testFunction()
})
$("#b").click(function() {
testFunction()
})
$("#c").click(function() {
testFunction()
})
……不如下面的表现
input = $("#input")
function testFunction() {
alert(input.val())
}
$("#a").click(function() {
testFunction()
})
$("#b").click(function() {
testFunction()
})
$("#c").click(function() {
testFunction()
})
最佳答案 显然,jQuery()调用在比jQuery对象的变量引用更少的总时间内完成.上次运行记录
> jQuery():16.580ms
>缓存jQuery()对象:22.885ms
(function() {
function testFunction() {
$("#input").val()
}
console.time("jQuery()");
for (let i = 0; i < 10000; i++) {
testFunction()
}
console.timeEnd("jQuery()");
})();
(function() {
let input = $("input");
function testFunction() {
input.val()
}
console.time("cached jQuery() object");
for (let i = 0; i < 10000; i++) {
testFunction()
}
console.timeEnd("cached jQuery() object");
})();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<input>