我正在玩jsperf
、querySelectorAll
和data-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