JavaScriptコア概念(1):タイプ変換


この記事は個人のブログから始まります.
これを見て、人を打ちたいという気持ちがありますか?ごみはJavaScriptです.この特は何でも幽霊です.多くの人は筆記試験でも面接でも、JSのタイプに変えられます.私のこの文章を真剣に読み終わると信じています.お母さんはもうタイプ転換の問題を心配しなくてもいいです.
元の値から元の値への変換
  • 元の値は、ブール値のすべての偽値(undefined、null、0、-0、NaN、”)に変換され、falseに変換され、その他はtrue
  • に変換される.
  • 元の値を文字列に変換すると、元の値+「
  • 」に相当します.
  • 元の値を数字に変換します.
  • ブール回転数:true->1、false->0
  • 文字列は数字を回転します.数字で表した文字列は直接文字列に変換できます.文字列の先頭にスペースがあると無視されますが、スペースは中間にあります.変換結果はNaNです.
      +" 66" // 66
      +" 6 7 " // NaN
  • 元の値からオブジェクトへの変換
  • nullとundefinedオブジェクトを回転して直接異常を投げます.
  • 元の値は、String()、Number()、Boolean()の構造関数を呼び出して、それぞれの包装対象
  • に変換される.
    元の値への変換
  • オブジェクトをブールに変換すると、true
  • となります.
  • オブジェクトを文字列に
  • オブジェクトにtoString()の方法があれば、toString()の方法を呼び出す.この方法が元の値を返すと、この値は文字列に変換されます.
  • オブジェクトがString()の方法がない場合、またはこの方法で戻ってきたのが元の値ではない場合、オブジェクトのvalueOf()の方法が起動される.この方法が存在するならば、戻り値が元の値であれば、文字列に変換します.
  • そうでなければ、エラーを報告します.
  • オブジェクトから数字
  • オブジェクトは数字に変換され、対象と文字列に変換して同じことをしたが、後者はまずvalueOfメソッドを呼び出し、もし呼び出しが失敗した場合や元の値でない場合はtostringメソッドを呼び出す.
  • 追加.いくつかの一般的な内蔵オブジェクトtoStringメソッドとvalueOfの変換規則
  • toString関連
  • - valueOf   
    ==演算子はどのようにタイプ変換しますか?
  • もし一つの値がnullであり、もう一つの値がundefinedであれば、
  • に等しい.
  • もし一つが文字列で、もう一つの値が数字であれば、文字列を数字に変換して比較する
  • .
  • 任意の値がtrueであれば、trueを1に変換して比較する.任意の値がfalseである場合、falseを0に変換して比較する
  • .
  • は、一つが対象である場合、もう一つが数値または文字列である場合、オブジェクトをベースタイプの値に変換して比較する.オブジェクトをベースタイプに変換し、そのtoStringまたはvalueOf方法を利用します.jsコア内蔵クラスは、toStringより先にvalueOfを試します.例外はDateで、DateはtoString変換を利用しています.jsコア以外のオブジェクトは、自分の実装で定義された方法で元の値に変換されます.
  • +演算子はどのようにタイプ変換しますか?
  • 元演算子として数字に変換する場合、しばしば文字列をデジタル
    +"2" //  2
    2+false // 0
  • に変換するために使用される.
  • 二二項演算子として二種類の変換方式があります.
  • 両側に文字列がある場合、もう一方は文字列に変換して加算します.
  • 文字列がないと、両方が数値に変換されて加算され、対象も前の方法によって元の値の数字に変換される.
  • のうちの一つの操作数がオブジェクトであれば、オブジェクトを元の値に変換し、日付オブジェクトはtoString()方式で変換され、他のオブジェクトはvalueOf()方式で変換されるが、多くの方法は利用可能なvalueOf()法を備えていないので、tostring()方法で変換される.
  • フローチャートは以下の通りです
    実戦分析
    1.[]+[] // ""_.1.まず演算子は+演算子であり、明らかに二元演算子であり、対象があるので、最後の点を選択します.演算子はオブジェクトで、オブジェクトを元の値に変換します.
    _.2.両方のオブジェクトは配列で、左の配列は先にvalueOf()のメソッドを呼び出して、tostring()を呼び出します.方法は、tostring()の転化規則の中に『配列を文字列に変換して、カンマで区切ります』があります.他の要素がないので、直結は空の文字列「」です.
    ![](https://user-gold-cdn.xitu.io/2018/8/7/165124228cd61ccc?w=236&h=64&f=png&s=2453)
    
    _.3.プラス記号は片方が文字列になっていますので、一方も文字列に変換されますので、両方とも空の文字列です.
    _.4.だから、合わせても空の文字列「」です.
    2.(! + [] + [] + ![]).length // 9_.1.まず、1元の演算子を多く見ます.「+」「!」は、1元の演算子に対して右結合性ですので、次のような演算順を描いてもいいです.
    _.2.+[]に対して、配列は文字列ではなく数字に変換されます.「+演算子はどのようにタイプ変換されますか?」(!0 + [] + "false").length _.3.第二ステップは簡単で、0をブールに変換するのはfalseです.だから、第二ステップを経て、ブールに変換します.(true + [] + "false").length _.4.第三のステップの中間の[]は空の文字列に変換されます.「+演算子はどのようにタイプ変換されますか?」第二の条の第三の点では、オブジェクトは元の値に変換されます.すなわち空の文字です.だから、第三のステップを経ると元の値になります.("true" + "false").length_.5.5歩目は簡単です.最終的には"truefalse".length // 9付録:
    「JavaScript権威ガイド」の種類変換表
    個人番号、交流を続けてください.