在javascript比较中丢失

Lost in javascript comparisons

本文关键字:比较 javascript      更新时间:2023-09-26

我正在编写一个脚本,当我的body元素没有以下任何类时执行:

a或b或c与d

我试过了,但似乎没有奏效:

if ((!$('body').hasClass('a')) || (!$('body').hasClass('b')) || ((!($('body').hasClass('c')) && (!$('body').hasClass('d'))))) {
}

更新

这似乎奏效了:

if (!($('body').hasClass('a') || $('body').hasClass('b') || $('body').hasClass('c') && $('body').hasClass('d'))) {
}

使用

$(function(){
   if ((!$('body').hasClass('a')) || (!$('body').hasClass('b')) || !($('body').hasClass('c') && $('body').hasClass('d'))) {
}
});

您正在寻找一个没有任何类的主体,因此需要使用&&。以下是发生的情况:

if(hasclass(a) || hasclass(b))=if(true OR false)=if(true)

在OR运算符||之上意味着一旦它达到真正的求值,它将执行您的if-块。

if(hasclass(a) && hasclass(b))=if(true AND false)=if(false)

这里的AND运算符&&表示,一旦达到false求值,您的块就不会被执行。

你希望最后一件事发生,因为你希望它既没有这两个类。学习如何使用这些运算符,因为它们可能非常令人困惑。只要记住AND运算符只有在所有语句都为true时才会执行,OR运算符只有在其中一个语句为true时才执行。嵌套运算符的工作原理相同,因此如果a、b和c相同,if((a = b && b = c) || (a = c))将执行,或者当a和c相同时执行,但当a和b相同或a和c相等时不执行。

有关表达式和运算符(特别是位和必读)的详细信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise_operators