0

我在玩jsperf,querySelectorAlldata-xyz属性。

这是我当前的 jsperf:jqmData 与属性选择器

关键部分在js测试中:

document.body.querySelectorAll('data-role')

请注意,我没有使用任何方括号 [],它仍然可以正常运行,并且比所有其他选择器都好。我将它提高到一个页面上的 200 多个数据角色元素,它仍然运行得更快。

然后我在这里尝试了我自己的测试页面(参见 Firebug),唉......当我省略方括号时,nodeList 是空的。

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

4

1 回答 1

1

您的测试不会检查选择器是否实际匹配任何内容。querySelectorAll当它知道没有任何data-role标签并因此可以立即返回 empty时,获胜也就不足为奇了NodeList。:-)

事实上,如果您对每个测试添加检查以确保它确实获得了正确数量的元素,则该测试querySelectorAll失败:http: //jsperf.com/jqmdata-vs-attribute-selecotr/5

于 2012-12-15T09:25:33.663 回答