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