【问题标题】:why use the "!!!"?为什么要使用“!!!”?
【发布时间】:2010-06-11 04:15:42
【问题描述】:

如下代码:

var a = {};
if(!!!a[tabType]){
   a[tabType] = [];
   a[tabType].push([self,boxObj]);
}else{
   a[tabType].push([self,boxObj]);
}

我认为 !!!a[tabType] 等于 !a[tabType] 为什么要使用“!!!”不是 ”!” ?

谢谢!

【问题讨论】:

  • 因为你真的,真的希望它是假的! ;-)
  • 并不真正相关,但这可以考虑:var a = {}; a[tabType] = a[tabType] || []; a[tabType].push([self,boxObj]);
  • 我更喜欢这样的标题:为什么不使用 !!!运营商?
  • 错了,应该是!!!!!! 转换成超级布尔值。

标签: javascript performance data-structures


【解决方案1】:

!! 构造强制转换为布尔值。我看不出这里有什么意义。

【讨论】:

  • 令人惊讶的是有多少人投票赞成完全错误的答案。投票给他们,你支持。只是说明每个人都认为他们知道 javascript,但实际上很少有人知道。
  • @Matt Briggs 我相信你知道,但!! 也适用于其他语言,所以我想更多人会知道它。
  • @Matt Briggs: x1a4 可能有点偏,但意图是正确的:! 强制强制为布尔值,所以! 很有用,即使!! 也很有用,但是!!! 有什么意义?我们看不见。
  • @thanatos:同意,但至少他的陈述是正确的。机会是有人用过!!,然后别人不想用它,不知道是什么!!这样做只是增加了另一个爆炸。在我发布这篇文章时,jacobs 的回答有 7 个赞,而这个没有,这就是我发表评论的原因
【解决方案2】:

根本没有意义。完全等同于使用!

【讨论】:

    【解决方案3】:

    它使读者更清楚。我会像这样在它周围放置空格:

    if( ! a[tabType]){
    

    但看起来这个程序员非常反对空格。

    【讨论】:

    • @Earlz:那它还能做什么呢?其他答案已经解释说它没有计算目的......编码器可能只是试图对其进行一些样式化 - 或者可能像杰里米建议的那样让它变得明显。
    • @inc 我猜他们这样做是为了自娱自乐,然后我猜他们是想“让它显而易见”; !!! 只会让看到它的人感到困惑,而不是让他们思考oh, obviously that's a not symbol。和*******printf一样;它看起来很有趣,但大多只会让看到它的人感到困惑
    • 我猜他们不知道自己在做什么@incred @Mich。这与输入if(x==true==true) 差不多。只有当他们盲目地尝试获取一段(通常是复制和粘贴的)代码为他们工作时,才会这样做。
    猜你喜欢
    • 2017-05-16
    • 2012-08-22
    • 2016-09-12
    • 1970-01-01
    • 2020-11-07
    • 2011-07-27
    • 2020-05-05
    • 2017-03-09
    • 2010-09-20
    相关资源
    最近更新 更多