我理解JavaScript中的双非运算符是什么意思。但我对它的使用很好奇,我不确定我最近的一个说法是否正确。
我说if (!!someVar)
和(!!someVar && ...
都没有意义,因为if
和&&
都会将someVar作为布尔值进行评估,所以!!是多余的。
实际上,我只能想到这样使用双非运算符是合法的,即如果您想要与另一个布尔值进行严格比较(因此可能在期望显式true或false的返回值中)。
这正确吗?当我注意到jQuery 1.3.2同时使用if (!!someVar)
和return !!someVar && ...
时,我开始怀疑自己。
在这些情况下,双重否定有任何实际效果吗?
我的个人意见是,它只会导致混淆。如果我看到一个if语句,我知道它正在将其评估为布尔值。
!!
只是将非运算符应用两次。 - outisif (!!err)
?和为什么使用!!
将变量强制转换为布尔值以在条件表达式中使用?。 - Bergi