【发布时间】:2014-09-10 18:00:36
【问题描述】:
假设我有一个匹配“.foo”的元素。
<div class="foo"></div>
我从经验中了解到多次调用查找器会降低性能,例如,如果我尝试多次更改同一个对象。
$(".foo").doOneThing();
$(".foo").doAnotherThing();
$(".foo").doSomethingElse();
// Makes jQuery look for ".foo" three times, bad!
对
$foo = $(".foo");
$foo.callAllThreeOfTheThingMethodsInThePreviousBlock();
// Calls $(".foo") only once, but occupies memory with a jQuery object version of the foo div.
我的问题是,在留出内存来保存 jQuery 对象而不是再次调用 jQuery 方法之前,您必须使用这个查找器多少次?
我问,自从前几天我把我不止一次调用的每一个查找器都放入了一个存储的 $object 变量中;我的老板说过,如果我只使用取景器,比如两到三遍,就改用取景器而不是存储的对象。您对此有何看法?
【问题讨论】:
-
同一组物品找三遍是没有意义的,不如把它保存到一个局部变量中!
-
如果出现不止一次,我倾向于为它提升一个 var。我对所有东西都这样做,即使是简单的字符串。
$(".foo").doOneThing().doAnotherThing().doSomethingElse();也可以工作,哈哈。 -
只是一个小插曲来展示这两种不同的方式在大量操作中的表现。 plnkr.co/edit/lb3Cew3j1p5HE5goCgqd?p=preview
-
只是 Pr0gr4mm3r 的 plunker 已经是一个很好的理由。虽小,但速度相差近 3 倍。
-
@RaphaelDDL 您最后一次注意到 50 毫秒和 100 毫秒之间的差异是什么时候?
标签: javascript jquery