使用变量而不是$(this)是一种好习惯吗?

时间:2012-07-19 08:33:41

标签: javascript jquery

  

可能重复:
  What is the cost of '$(this)'?

就性能和可读性而言,最好是命名变量而不是使用$(this)吗?

一个例子是

$(".element").click(function() {

    var elem = $(this);

    //Examples
    elem.addClass("example");
    console.log( elem.attr("id") );

}):

2 个答案:

答案 0 :(得分:0)

是的。由于$(this)本质上是一个相当昂贵的函数调用触发一个Dom-Search,所以每次调用$(this)时都会重复它,而var elem = $(this);你有一次函数调用并将结果存储在一个变量中

实际上,将选择器传递给函数要比传递像this这样的DOM元素要贵得多。因此缓存this只会产生非常微小的影响,而缓存像$("#foo[name|='bar']")这样的东西真的很重要。

我更喜欢将$添加到变量名称之前,这样很明显你在这里有一个jQery对象。

$this = $(this);

现在$this在可读性方面没有明显的缺点,同时具有性能优势。此外,它可以通过压缩器缩小为单个字母变量,而$(this)则不能。

答案 1 :(得分:0)

无论jQuery中的搜索效率如何,我个人都希望缓存对保持不变的变量的引用。无论如何,引用变量更快。