Truthy、Falsyとtrue、falseの違い

1779 ワード

TruthyとFalsy
このtruthyとfalsyを紹介します.googleはこの単語がないです.考えても通訳はいらないです.中国語の感性で理解すると、「正しい」ではなくて、「帰ってもいいもの」です.
多くの言語のように、javascriptもbootleanデータタイプ(trueとfalseの2つの値があります)をサポートしていますが、特に、javascriptのどの対象にもbootlean値が含まれています.これはtruthyとfalsyの原則です.私たちはこの暗黙的な属性、特に変数比較に便利です.これらの特別なルールを把握することは、先端コードのデバッグに役立ちます.
truthyとfalsyの値
以下の値はfalse属性を含んでいます.
  • false
  • (ゼロ)
  • 「」
  • null
  • undefined
  • NaN(Not-a-Number) 
  • 注意してください.これはnumberタイプです.変数がnumberではないことを示すnumberタイプです.ちょっと言いにくいです.
  • この他の値にはtrue属性が含まれています.例えば、「0」(文字列)、「false」(文字列)、空の関数、空の配列、空のオブジェクトなどが混ざりやすく、trueに戻ります.正常な変数は「abc」、1234などはもちろん、trueにも通じる.
    例をあげましょう
    var a = !!(0); // a   false var b = !!("0"); // b   true
    falsy値との比較
    falsy値間の比較については、以下のような場合があります.
    1.false、0、串の三者は互いに待つことができます.
    var c = (false == 0); // true var d = (false == ""); // true var e = (0 == ""); // true
    2.nullとundefinedは互いに待つことができますが、他の何種類かとは同じではありません.
    var f = (null == false); // false var g = (null == null); // true var h = (undefined == undefined); // true var i = (undefined == null); // true
    3.NaNは、他のいかなる値と同じではなく、自分とも違っています.
    var j = (NaN == null); // false var k = (NaN == NaN); // false
    もう一つ小さな知識を追加します.
    javascriptはtypeof(NaN)を使い、戻り値はnumber、つまりこのNaNはnumberタイプです.幸いにもjsは一つの変数が数字かどうかを判断するための関数inNaNを提供しています.  もしあなたが使う時に疑問があります...  強さを使うのは同じでしょう.
    var l = (false == 0); // true var m = (false === 0); // false
    もう一つの特別なところ  空配列、例えばvar a=[]trueに戻るのですが、どう使うかによって違います.
    if ( [] ) { //           } if ( [] == true ) { //           } if ( [] == false ) { //           }
    つまり、truthyとtrueはまだ違っています.true属性が含まれている変数はtrueとは思えません.ブックレンタイプではありません.