在JQuery中查找节点的成本是多少?

Joh*_*nGa 5 javascript jquery

我总是保存结果,find()以避免多次子树遍历,如果我需要多次值:

var $a_bar = $('div.foo').find('a.bar');
$a_bar.removeClass(...);
// ... code here
$a_bar.bazz();
Run Code Online (Sandbox Code Playgroud)

代替

$('div.foo').find('a.bar').removeClass(...);
// ... code here
$('div.foo').find('a.bar').bazz();
Run Code Online (Sandbox Code Playgroud)

我想知道它是不是微优化......那么找到一个节点的成本/复杂度是JQuery多少?

Mag*_*gus 8

你可以在js perf上测试它:http://jsperf.com/ 只需创建一个测试并运行它.

我在这里创建了一个小测试:http://jsperf.com/jquery-find55

在我的浏览器上(firefox 18):

  • 测试1(我保存查找结果)得分为7,074次操作
  • 测试2(我不保存查找结果)得分为1,553次操作

所以,是的,find是"慢",将它存储在一个变量中绝对是一个好主意.