1. ホーム
  2. javascript

[解決済み] javascriptでダブルエクスクラメーション(!)はどのように機能するのでしょうか?[重複しています]。

2022-01-25 21:14:48

質問

Discover Meteorのデモを見ているのですが、「return !!! userId;」が具体的にどのように機能するのかがわからず、悩んでいます。 この部分 :

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

解決方法は?

! は論理否定または"not"演算子です。 !!! を2回行う。これは、quot;truthy" または "falsy" の値を、quot;truthy" にキャストするための方法です。 true または false それぞれ ブーリアンが与えられると ! はその値を否定する,つまり !true となります。 false であり、その逆も同様です。boolean以外のものが与えられると、その値はまずbooleanに変換され、次に否定される。たとえば !undefined は、まず undefinedfalse そして、それを否定することで true . もう1つの ! 演算子( !!undefined となります。 false ということで、実質的には !!undefined が変換されます。 undefined から false .

JavaScriptでは、値 false , null , undefined , 0 , -0 , NaN および '' (空文字列)は "falsy"値です。それ以外の値は、"truthy." です。 (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