【问题标题】:How does the double exclamation (!!) work in javascript? [duplicate]双感叹号 (!!) 在 javascript 中是如何工作的? [复制]
【发布时间】:2015-06-01 10:57:15
【问题描述】:

我正在浏览 Discover Meteor 演示,并且正在努力弄清楚“返回 !!用户身份;'在this section工作:

Posts.allow({
  insert: function(userId, doc) {
  // only allow posting if you are logged in
    return !! userId;
  }
});

【问题讨论】:

标签: javascript


【解决方案1】:

! 是逻辑否定或“非”运算符。 !! 是 ! 两次。这是一种将“真实”或“虚假”值分别转换为true 或false 的方法。给定一个布尔值,! 将否定该值,即!true 产生false,反之亦然。给定一个布尔值以外的值,该值将首先转换为布尔值,然后取反。例如,!undefined 将首先将undefined 转换为false,然后将其取反,产生true。应用第二个 ! 运算符 (!!undefined) 生成 false,因此实际上 !!undefined 将 undefined 转换为 false。

在 JavaScript 中,false、null、undefined、0、-0、NaN 和 ''(空字符串)值是“虚假”值。所有其他值都是“真值”。(1):7.1.2 这是应用于各种值的! 和!! 的真值表:

 value     │  !value  │  !!value
━━━━━━━━━━━┿━━━━━━━━━━┿━━━━━━━━━━━
 false     │ ✔ true   │   false
 true      │   false  │ ✔ true
 null      │ ✔ true   │   false
 undefined │ ✔ true   │   false
 0         │ ✔ true   │   false
 -0        │ ✔ true   │   false
 1         │   false  │ ✔ true
 -5        │   false  │ ✔ true
 NaN       │ ✔ true   │   false
 ''        │ ✔ true   │   false
 'hello'   │   false  │ ✔ true

【讨论】:

  • 谢谢!这真的很有帮助!
  • 这是我目前看到的最好的解释
  • 很好的答案!非常感谢!
  • 值得注意(如“hello”)!!"false" #=> true
  • 好像和JavaScript Boolean method一样工作
猜你喜欢
  • 2012-03-06
  • 2017-01-18
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 2021-07-22
  • 2011-12-22
  • 2013-02-07
相关资源
最近更新 更多