为什么querySelectorAll在jsPerf上使用data-xyz工作,但在我的代码中却不工作



我正在玩jsperfquerySelectorAlldata-xyz属性。

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

批评文章在js测试中:

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

请注意,我没有使用任何方括号 [],它仍然运行良好并且击败了所有其他选择器。我将其提升到页面上的 200+ 个数据角色元素,它仍然运行得更快。

然后我在这里尝试了我自己的测试页面(见火虫),唉......当我省略而不带方括号时,节点列表为空。

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

您的测试不会检查选择器是否实际匹配任何内容。毫不奇怪,当querySelectorAll知道没有任何data-role标签并且可以立即返回空NodeList时,它赢了。:-)

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

相关内容

  • 没有找到相关文章

最新更新