Using the (!!!) operator in JavaScript?
本问题已经有最佳答案,请猛点这里访问。
!!运算符显然很有用,因为它强制检查某个不是布尔值的对象,即"真"条件。
但假呢?你需要使用吗?!!!?
一个
1 2 | !1 // false !0 // true |
要将
同样,
that's for"True" conditions.
不,这是任何价值。
为什么?因为not运算符只返回相反的布尔值。所以
1 2 3 4 5 6 7 | 0 // is falsy !0 // -> true !!0 // -> false 'foo' // is truthy !'foo' // -> false !!'foo' // -> true |
任何附加应用程序都将再次切换该值。因此,
这完美地回答了您的问题https://stackoverflow.com/a/264037/1561922
!!!!X可能正在反转布尔转换!X:
1 2 3 | var myBool = Boolean("false"); // == true var myBool = !!"false"; // == true |
"任何非空字符串的值都将为true"
所以
这个问题不是笑话。node.js(5天前下载)在assert.js中使用它,例如:
1 2 3 4 | function ok(value, message) { if (!!!value) fail(value, true, message, '==', assert.ok); } assert.ok = ok; |
编辑:我认为他们这样做是出于代码可读性的原因,出于习惯,因为!值已经足够。
编辑:节点更改了它。我不知道为什么我5天前下载的node.js版本仍然存在!!!!值而不是!GitHub中的值。
编辑:这就是原因。
1 2 3 4 5 | var boolCheck = 0; boolCheck //0 !boolCheck //true !!boolCheck //false !!!boolCheck //true - again |
这里也一样:
1 2 3 4 5 | var boolCheck = 1; boolCheck //1 !boolCheck //false !!boolCheck //true !!!boolCheck //false - again |
没有理由使用这个(!!!!)这是一个重言式。!!!是有用的: