【发布时间】:2011-01-11 13:42:03
【问题描述】:
我了解what the double not operator does in JavaScript。我很好奇它的用途以及我最近的断言是否正确。
我说if (!!someVar) 从来没有意义,(!!someVar && ... 也没有意义,因为if 和&& 都会导致 someVar 被评估为布尔值,所以 !!是多余的。
事实上,我唯一能想到使用 double not 运算符是合法的情况是,如果您想与另一个布尔值进行严格比较(因此可能在返回值中明确地期望 true 或 false )。
这是正确的吗?当我注意到 jQuery 1.3.2 同时使用了if (!!someVar) 和return !!someVar && ... 时,我开始怀疑自己
double 在这些情况下没有任何实际效果吗?
我个人的看法是,它只会导致混乱。如果我看到一个 if 语句,我知道它会将其评估为布尔值。
【问题讨论】:
-
请注意(正如贾斯汀在回答您引用的问题 stackoverflow.com/questions/1406604/… 中指出的那样),没有双非运算符。
!!只应用了两次非运算符。 -
这个“运算符”是惯用语的定义……除非您知道它是什么,否则您可能会感到困惑或只是将其误读为单个“非”。我将开始使用它来迷惑我的同事:D 如果有人感兴趣,我在 jQuery.grep 中的“wild”中看到了这个
标签: javascript operators boolean