我应该在“addClass”之前使用“hasClass”吗?

我遇到了下面的脚本,它检查一个元素是否具有类a ,如果不是,则添加它:

 if (!$("div").hasClass("a")){ $("div").addClass("a"); } 

由于jQuery不会添加类,如果它已经存在,这可以被改为:

 $("div").addClass("a"); 

然而,有没有任何性能改进,首先使用hasClass ,或者这是使用addClass不pipe怎么样的方法,因此重复逻辑?

.hasClass()检查没有用,因为jQuery 也会一直检查 .addClass() 。 这只是额外的工作。

你可以在源代码中看到: https : //github.com/jquery/jquery/blob/master/src/attributes/classes.js#L38-L45它们在使用addClass时检查类是否存在。

因此,在这种情况下,没有理由使用.hasClass()如果元素没有类,则需要执行更多操作。

值得一提的是,在有限的testing中,使用.hasClass()提高性能: http : .hasClass()

但是,即使独立的.removeClass()在Chrome中报告的速度比以前慢了几倍,它每秒钟大约有70,000次操作。