回答:
私はコメントと非常にコメントする4つの賛成票の後にテストをコミットしました。私が言ったことは正解であることがわかりました。結果は次のとおりです。
http://jsperf.com/hasclass-vs-is-so
is
あなたは、たとえば行うことができ、多目的であるis('.class')
、is(':checked')
などその手段is
がある以上やっている場合hasClass
、クラスのためにのみチェックがセットまたはないというその限定されています。
したがって、hasClass
任意のレベルのパフォーマンスを優先する場合は、より高速になるはずです。
hasClass
ある多くの速いです。
以来is
より汎用的でhasClass
かつ用途filter
提供表現を処理するために、可能性が高いように思わhasClass
速いです。
Firebugコンソールから次のコードを実行しました。
function usingIs() {
for (var i=0; i<10000;i++) {
$('div#example-0').is('.test');
}
}
function usingHas(){
for (var i=0; i<10000;i++) {
$('div#example-0').hasClass('test');
}
}
usingIs();
usingHas();
私が得た:
大きな違いではありませんが、多くのテストを行っている場合は関連があるかもしれません。
「大きな違いではない」と言ったときに編集してください。私のポイントは、0.8秒の違いを確認するには10000サイクル実行する必要があるということです。からis
に切り替えるhasClass
と、すべてのパフォーマンスが大幅に改善されるようなWebアプリケーションが表示されて驚いています。ただし、これは速度が35%向上することを認めます。
どちらもパフォーマンスの点ではかなり近いはずですが$('#foo').hasClass('bar');
、私には読みやすく、意味的に正しいようです。