성능 관점에서 요소에 클래스가 할당되었는지 여부를 결정하는 선호하는 방법이 있습니까?
$('#foo').hasClass('bar');
또는
$('#foo').is('.bar');
답변
최신 정보:
나는 댓글과 4 개의 찬성표에 따라 테스트를했습니다. 내가 말한 것이 정답 인 것으로 밝혀졌습니다. 결과는 다음과 같습니다.
http://jsperf.com/hasclass-vs-is-so
(가) is
다목적, 당신은 예를 들어 할 수있는 is('.class')
, is(':checked')
등 어떤 수단 is
이 더 많은 일을 위치를 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();
나는 얻었다 :
- usingIs : 3191.663ms
- usingHas : 2362.523ms
큰 차이는 아니지만 많은 테스트를 수행하는 경우 관련이있을 수 있습니다 .
내가 ‘큰 차이가 아니라고 말할 때 편집하십시오 . 내 요점은 0.8s의 차이를 보려면 10000 사이클을 수행해야한다는 것입니다. 에서 is
로 전환하면 hasClass
모든 성능이 크게 향상 되는 웹 응용 프로그램을 보면 놀랄 것입니다. 그러나 이것이 속도가 35 % 향상되었음을 인정합니다.
답변
둘 다 성능면에서 매우 비슷해야하지만 $('#foo').hasClass('bar');
더 읽기 쉽고 의미 상으로 정확 해 보입니다.
![](http://daplus.net/wp-content/uploads/2023/04/coupang_part-e1630022808943-2.png)