最佳答案
通过查看我们一个项目的源代码,我发现有些地方我们在条件语句中使用了三个感叹号,比如:
if (!!!someVar) {
// ...
}
现在,我明白这不是某种很少使用的运算符,它只是连续的三个否定,就像 !(!(!someVar)))。我不明白它有什么用——在我看来,它可以安全地被单一叹号所取代。下面是我试图找到一个案例当 !!!a不等于 !a(采取直接从谷歌铬控制台) :
var a = ''
""
!!!a === !a
true
a = 'string'
"string"
!!!a === !a
true
a = null
null
!!!a === !a
true
a = 12
12
!!!a === !a
true
a = {b: 1}
Object {b: 1}
!!!a.c === !a.c // a.c is undefined here
true
a = []
[]
!!!a === !a
true
a = [1,2]
[1, 2]
!!!a === !a
true
我是不是漏掉了一些罕见的(或显而易见的)案例?