双重感叹号(!!)如何在javascript中运行?

wor*_*ise 24 javascript

我正在通过Discover Meteor演示,我正在努力弄清楚究竟是怎么回事!用户身份;' 适用于此部分:

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

Jor*_*ing 89

!是逻辑否定或"不"运算符.!!!两次.这是一种将"真实"或"虚假"的价值分别投入true或投入的方式false.给定布尔值,!将否定值,即!true收益率false,反之亦然.给定除布尔值之外的其他内容,该值将首先转换为布尔值,然后取消.例如,!undefined首先会转换undefinedfalse然后否定它,屈服true.应用第二个!运算符(!!undefined)会产生false,因此实际上!!undefined转换undefinedfalse.

在JavaScript中,价值观false,null,undefined,0,-0,NaN,和''(空字符串)是"falsy"的价值观.所有其他值都是"真实的".(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
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是(如“hello”) `!!"false"` #=> `true` (6认同)
  • 看起来它的工作原理与[JavaScript布尔方法](https://www.geeksforgeeks.org/javascript-boolean)相同 (5认同)