ダブル・バンとは何かJavaScriptの演算子?


すべての値はJavaScriptの真偽値または虚偽値を持ちます.例えば、null valueの論理値はfalseです.同様に34 の値が真である.これを使用して、二重バン演算子を使用して、変数をtrueまたはfalseにキャストできます.
それが何であるか、そして、それがどのように働くかに深く飛び込みましょう.
The ! JavaScriptでも、“bang”と呼ばれる、“論理”演算子です.ブール値の前にこの演算子を置くと、値を逆にして逆を返します.
!true // returns false
!false // returns true

isTrue = true // variable which is boolean
!isTrue // returns false
シングルBangが逆のブール値を返すならば、ダブルバンが何を返すか想像してください?
対応するブール値.言い換えれば、それが真実であるか偽りの価値であるかどうかによると、真実か間違っています.
Boolean trueに関連付けられている値は真であると言われています.Boolean False値に関連付けられている値はFalsyです.
!!true // returns true
!!false // returns false

isTrue = true // variable which is boolean
!!isTrue // returns true
我々はこれを使用することができますダブルバングを使用して非ブール値もかなりクールです.
isNumber = 34 // variable which is not boolean
!!isNumber // returns true

真の値
JavaScriptでは、真の値はブール値コンテキストで遭遇したときにtrueと見なされる値です.
以下の値は、JavaScriptがtruthysであると考えられる例がほとんどありません.
  • 対象:{}
  • 配列[]
  • 空の文字列ではありません:"anything"
  • ゼロ以外の数:3.14
  • 日付new Date();
  • 以下の例では、変数something はJavaScriptで真の値を持つ空でない文字列値を持ち、コンソールは最初のメッセージを出力します.
    var something = string;
     if (!!something) {
       console.log('This is truthy')
     } else {
       console.log('This is falsey') 
     }
    
    リンクの詳細についてはhere .

    虚偽値
    虚偽値は、ブール値コンテキストで遭遇したときにfalseと見なされる値です.
    以下の値は、JavaScriptがFalseyであると考えられる例のほとんどです.
  • 空の文字列:""
  • 0
  • null
  • undefined
  • NaN そして、以下のfalsy値のリスト.
  • 以下の例では、変数nothing0 JavaScriptでは偽の値を持っており、コンソールは2番目のメッセージを出力します.
    var nothing = 0;
     if (!!nothing) {
       console.log('This is truthy')
     } else {
       console.log('This is falsey') 
     }
    
    Falsyの値についてのリンクを見つけることができますhere .
    タイプキャスティングのためにどのように使用できるかを見てみましょう.
    function BankAccount(cash) {
    this.cash = cash;
    this.hasMoney = !!cash;
    }
    
    var myAccount = new BankAccount(80);
    console.log(myAccount.cash); // expected result: 80
    console.log(myAccount.hasMoney); // expected result: true
    
    var emptyAccount = new BankAccount(0);
    console.log(emptyAccount.cash); // expected result: 0
    console.log(emptyAccount.hasMoney); // expected result: false
    
    そして、それはそれを合計!
    ありがとう!