可能重复:
“$(this)”的成本是多少?
就性能和可读性而言,命名变量而不是使用$(this)
?
一个例子是
$(".element").click(function() {
var elem = $(this);
//Examples
elem.addClass("example");
console.log( elem.attr("id") );
}):
可能重复:
“$(this)”的成本是多少?
就性能和可读性而言,命名变量而不是使用$(this)
?
一个例子是
$(".element").click(function() {
var elem = $(this);
//Examples
elem.addClass("example");
console.log( elem.attr("id") );
}):
是的。因为$(this)
本质上是一个触发 Dom-Search 的非常昂贵的函数调用,所以每次调用$(this)
时都会重复它,而var elem = $(this);
函数调用一次并将结果存储在变量中。
实际上,将选择器传递给函数比传递 DOM 元素(如this
. 所以缓存this
只会产生很小的影响,而缓存类似的东西$("#foo[name|='bar']")
真的很重要。
我更喜欢$
在变量名前面加上 ,这样很明显你在这里有一个 jQery 对象。
$this = $(this);
现在$this
从可读性的角度来看没有明显的缺点,同时具有性能优势。也可以通过压缩器将其缩小为单个字母变量,但$(this)
不能。
我个人更喜欢缓存对保持不变的变量的引用,无论在 jQuery 中实现搜索的效率如何。无论如何,引用变量更快。