Javascript 双非运算符

Javascript 双非运算符,javascript,boolean,negation,Javascript,Boolean,Negation,下午好,在我的时区 我在一本书中看到了这行代码 !!(document.all && document.uniqueID); 为什么需要使用双not运算符?&&运算符是否已将结果转换为布尔值 提前谢谢 致以最诚挚的问候&将返回document.uniqueID的值(如果document.all具有除“”、false、null、未定义、0、NaN)以外的document.all&&document.uniqueID for Example 45 === (true &&

下午好,在我的时区

我在一本书中看到了这行代码

!!(document.all && document.uniqueID);
为什么需要使用双not运算符?&&运算符是否已将结果转换为布尔值

提前谢谢
致以最诚挚的问候

&
将返回
document.uniqueID
的值(如果
document.all
具有除“”、
false、null、未定义、0、NaN
)以外的
document.all&&document.uniqueID

 for Example 45 === (true && 45) //true

逻辑AND(&&)expr1&&expr2返回expr1(如果可以转换为false);否则,返回expr2。因此,当与布尔值一起使用时,如果两个操作数都为true,&&将返回true;否则,返回false


所以有必要使用
将上述表达式转换为
布尔值

IMO!!在这里是不必要的否,&&运算符不会将结果更改为布尔值,是的,它可能是必要的,这取决于您是否需要布尔值。@lombausch为什么这么说?如果作者需要布尔值,这可能是必要的。“但是,&&和| |运算符实际上返回指定操作数之一的值,因此如果这些运算符与非布尔值一起使用,则它们可能返回非布尔值”:@AlexK.)我不知道它是这样工作的。谢谢你指出。