Javascript 为什么QuerySelector在jsPerf上使用数据xyz而不是在我的代码中工作?

Javascript 为什么QuerySelector在jsPerf上使用数据xyz而不是在我的代码中工作?,javascript,jquery,custom-data-attribute,jsperf,selectors-api,Javascript,Jquery,Custom Data Attribute,Jsperf,Selectors Api,我在玩弄jsperf、querySelectorAll和dataxyz属性 以下是我当前的jsperf: 关键部件在js测试中: document.body.querySelectorAll('data-role') 注意,我没有使用任何方括号[],它仍然运行良好,比所有其他选择器都差。我将它增加到一个页面上200多个数据角色元素,它仍然工作得更快 然后我尝试了我自己的测试页面(见Firebug),唉。。。如果不使用方括号省略,则节点列表为空 问题: jsperf使用了什么魔法,使得选择器在那

我在玩弄
jsperf
querySelectorAll
dataxyz
属性

以下是我当前的jsperf:

关键部件在
js
测试中:

document.body.querySelectorAll('data-role')
注意,我没有使用任何方括号[],它仍然运行良好,比所有其他选择器都差。我将它增加到一个页面上200多个数据角色元素,它仍然工作得更快

然后我尝试了我自己的测试页面(见Firebug),唉。。。如果不使用方括号省略,则节点列表为空

问题:

jsperf使用了什么魔法,使得选择器在那里工作,而不是在我的虚拟网站上。

您的测试不会检查选择器是否实际匹配任何内容。当
querySelectorAll
知道没有任何
数据角色
标记,因此可以立即返回一个空的
节点列表时,
:-),这并不奇怪


事实上,如果您向每个测试添加检查以确保它确实获得了正确数量的元素,
querySelectorAll
one失败:

@frequency:我添加了一个更新jsperf,显示
querySelectorAll
one不工作。我的启动了。谢谢