0

jsperfquerySelectorAllおよびdata-xyz属性をいじっています。

これが私の現在の jsperf です: jqmData と属性セレクター

重要な部分はjsテストにあります:

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

角括弧 [] を使用していないことに注意してください。それでも正常に動作し、他のすべてのセレクターをフラットに打ち負かします。1 ページに 200 以上の data-role 要素を追加しましたが、それでも高速に動作しました。

次に、ここで自分のテストページを試してみましたが(Firebugを参照)、残念ながら...角括弧なしで省略した場合、nodeListは空です。

質問:
ダミーの Web サイトではなくそこでセレクターが機能するように、jsperf が使用している魔法は何ですか?

4

1 に答える 1

1

Your tests don't check that the selector actually matched anything. No great surprise that querySelectorAll won when it knew there weren't any data-role tags and so could immediately return an empty NodeList. :-)

And indeed, if you add checks to each test to make sure it really got the right number of elements, the querySelectorAll one fails: http://jsperf.com/jqmdata-vs-attribute-selecotr/5

于 2012-12-15T09:25:33.663 に答える