javascript比較演算子分析

4419 ワード

最新の比較子演算に関するアドレスJS等しい比較アルゴリズム(=)の原理について
例を見る
        if ([]) {

            console.log("true")

        }

        if ([] != true) {

            console.log("false")

        }

        //result true false
[]trueですか?それともfalseですか?
    console.log([] == ![]);

     //result true
[]trueですか?それともfalseですか?
分析を続ける
        console.log(boolean([]));

        //result true
trueですかはい、確かにtrueです.どうして前の二つの結果が出ますか?
分析を続ける
表式は左から右へ計算することを知っています.
元の表式0==0を設定します.
まず右を復元します.
0 == 0; true
そして推計します 
false == 0; true
引き続く
"" == false; true
引き続く
[] == ""; true
右の復元が完了しました
        0 == 0;

        false == 0;

        "" == 0;

        [ ] == 0; 
左に戻す
[ ] == false; true
引き続く
false == ![]; true
だから
[ ] == ![]; true
左の復元が完了しました/http://www.cnblogs.com/ahjesusから作者の苦労した労働の成果を尊重します.転載は出所を明記してください.ありがとうございます.
最後に結果を示す
        0 == 0;

        false == 0;

        "" == 0;

        [] == 0;

        [] == false;

        [] == ![]; 
原理分析
        //         

        [ ] == ![];     //![]   bool 

        [ ] == false;   //           bool,   bool         number

        [ ] == 0;       //           number   string,  string      [ ].toString()

        "" == 0;        //        string     bool   ,    ‘’    false,             true

        false == 0;     //           bool,   bool         number

        0 == 0;         //      
まとめ:
比較方式は以下の1つの中にbookがあります.bookを対応のnumber 2の一方がnumberの一方がstringに変換します.stringを数字に変換します.3 stringを直接bookに変換すると、空の文字列'''がfalseに変換されます.他のすべての文字列をtrueに変換します. 
PS:全ての配列と対象のbook値はtrue、nullはfalseです.
以上は個人分析だけです.もっと権威のある方は公式資料を調べてください.誰が資料を見つけましたか?伝言をお願いします.ありがとうございます.
//出自http://www.cnblogs.com/ahjesus著者の労働の成果を尊重し、転載は出典を明記してください.ありがとうございます.