使用带有.hasClass()的if子句是否有效?
示例:
System.IO
或者
if ($(this).hasClass("class")){
this will happen
}
答案 0 :(得分:1)
查看source的hasClass本身,我们可以看到只能返回布尔
function (selector) {
var className = " " + selector + " ",
i = 0,
l = this.length;
for (; i < l; i++) {
if (this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf(className) >= 0) {
return true;
}
}
return false;
}
因此,不进行比较检查是有效的
if ($(this).hasClass("class")){
答案 1 :(得分:0)
对任何表达式使用if
语句是有效的。 if
语句是一个控制流语句,它可以跳过立即块(或单个语句)或执行它,具体取决于语句中表达式的值。使用标准强制规则将任何值强制转换为布尔值。
如果两个操作数相等(使用this algorithm),则==
比较运算符求值为true
的布尔值,否则为false
。将任何值与true
进行比较是多余的,因为如果它是true
,或者可以转换为true
,则表达式也将是true
,并且将是{{} 1}}用于任何其他值
在false
的情况下,返回值已经是布尔值,因此不需要强制。
所以,是的它是有效的,语句之间没有区别,你可以(并且应该)使用第一个。