JavaScriptタイプ変換

5215 ワード

jsにおけるデータタイプの変換は、一般的に2つに分類される.すなわち、強制タイプの変換と暗黙タイプの変換(js弱変数タイプの変換を利用する).
強制変換
JavaScript関数を使用して変換します.
数値を文字列に変換
グローバル方法String()は、数字を文字列に変換することができる.この方法は、任意の種類の数値、文字、変数、表現に使用できます.
String(x)         //     x          
String(123)       //     123          
String(100 + 23)  //                
Number方法toString()も同様の効果がある.
x.toString()
(123).toString()
(100 + 23).toString()
ブール値を文字列に変換
String(false)        //    "false"
String(true)         //    "true"
false.toString()     //    "false"
true.toString()      //    "true"
日付を文字列に変換Date()は文字列を返します.
Date()      //    Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)
グローバル方法String()は、日付オブジェクトを文字列に変換することができる.
String(new Date())      //    Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)
Date方法toString()も同様の効果がある.
obj = new Date()
obj.toString()   //    Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)
文字列を数値に変換
グローバル方法Number()は、文字列をデジタルに変換することができる.
  • 文字列は、「3.14」などの数字を含み、3.14などの数字に変換されます.
  • 空の文字列は0に変換される.
  • 他の文字列はNaNに変換されます.
  • Number("3.14")    //    3.14
    Number(" ")       //    0 
    Number("")        //    0
    Number("99 88")   //    NaN
    
    ·parseFloat()を使用して文字列を浮動小数点数に変換し、parseInt()は文字列を整数に変換することもできる.
    parseFloat("123");//123
    parseFloat("-123");//123
    parseFloat("12.34");//12.34
    parseFloat("12.35 ")//12.35
    parseFloat("xc");//NaN
    parseFloat("0xAA");//0
    parseFloat("0110");//110
    parseFloat([1]);//1
    parseFloat([2,3]);//2
    parseFloat([]);//NaN
    parseFloat(null)//NaN
    
    parseInt("123");//123
    parseInt("+123");//123
    parseInt("-123");//123
    parseInt("12.3 ")//12
    parseInt("abc");//NaN
    parseInt([1,2])//1
    parseInt([1,2,4])//1
    parseInt("  ");//NaN
    
    2進数、8進数、16進数、または他の任意の進数の文字列を整数に変換します.
    parseInt("AA",16);//170
    parseInt("10",2);//2
    parseInt("10",8);//8
    parseInt("10",10);//10
    
    演算子+は、変数を数値に変換するために使用することができ、変数が変換できない場合は、依然として数値になりますが、値はNaN:
    var y = "5";      // y       
    var x = + y;      // x      
    
    var y = "John";   // y       
    var x = + y;      // x       (NaN)
    
    ブール値を数値に変換
    グローバル方法Number()は、ブール値をデジタルに変換することができる.
    Number(false)     //    0
    Number(true)      //    1
    
    自動変換タイプ
    場合によっては、表示変換を提供しなくても、Javascriptは自動タイプ変換を行います.
  • は、非数値であるかどうかを検出するための関数:isNaN(mix)
  • isNaN()関数は、パラメータ値をNumber()で変換しようとしますが、結果が「非数値」であればtrueに戻ります.そうでなければfalseに戻ります.
  • は、順方向演算子(フロントおよびバックを含む)、1元正負符号演算子
  • をインクリメントする.
    これらの操作は、任意のデータタイプの値に適用され、異なるタイプの値に対して、このオペレータは、以下の規則に従う(対照的に発見されたが、その規則は、Number()規則とほぼ同じである).
    (1)               ,         (     Number()),     1   ,           。
    (2)                ,        NaN,           。
    (3)      false,      0     1   ,           。
    (4)      true,      1     1   ,           。
    (5)       ,    1   。
    (6)     ,      valueOf()  ,              。     NaN,   toString()           。          。
    
  • 加算演算オペレータプラス記号演算オペレータは、Javascriptでも文字列接続子に使用されるので、プラス記号のルールは2つの場合に分けられます.
  • 2つの操作値が数値である場合、その規則は:(1)一つの操作数がNaNであればNaN(2)Infinity+Infinityであれば、結果はInfinity(3)が-Infinity+(Infinity)であれば、-Infinity(4)がInfinity+(Infinity+(-Infinity)であれば、結果は(N+0)+0)(5)+0)+0+0)(5)+0)(0)+0)+0+0+0+0+0)(5)(0)+0+0)+0+0+0)(5)+0+0+0)(0)+0+0+0)(5)+0)(結果は+0です
    一つの操作値が文字列である場合、二つの操作値が文字列である場合、それらをつなぎ合わせて一つの操作値が文字列である場合、他の操作値を文字列に変換してつぎ合わせます.一つの操作数が対象、数値またはブール値である場合、toString()メソッドを呼び出して文字列の値を取得します.次に前の文字列ルールを適用します.undefinedおよびnullに対しては、それぞれString()明示的な変換を呼び出して文字列に変換する.加算では、動作値が文字列タイプの場合、他の操作値を文字列に変換して接続することができます.
  • 乗算、減算演算子、取型演算子
  • これらの操作は演算であるため、共通性があります.動作値の一つが数値でない場合は、暗黙的にNumber()関数を呼び出して変換します.各演算の詳細なルールはECMAScriptの定義を参照してください.
  • 論理演算子(!、&、12462)
  • 論理非(!)オペレータはまずBoolean()関数を通じてその操作値をブール値に変換してから逆を求めます.
    論理と(&&)操作子は、一つの操作値がブール値でない場合、以下の規則に従って変換します.
    (1)         Boolean()    true,         ,        (  Boolean()     )
    (2)         null,  null
    (3)         NaN,  NaN
    (4)         undefined,  undefined
    
    論理またはオペレータは、ブール値ではない場合、以下の規則に従う.
    (1)         Boolean()    false,         ,          (  Boolean()     )
    (2)  undefined、null NaN         (&&)  
    
  • 関係オペレータ(<=>=)
  • 上記のオペレータと同様に、関係オペレータの操作値は任意のタイプであっても良いので、非数値タイプを使って比較に参加する場合も、システムによる暗黙的なタイプの変換が必要である.
    (1)           ,       
    (2)            ,              
    (3)            ,             ,      
    (4)          ,   valueOf()  (      valueOf()     toString()  ),                
    (5)           ,        ,     
     :NaN       ,           ,     ,                  false。
    
  • 等しいオペレータ(=)
  • 等しい操作子は操作値を暗黙的に変換して比較します.
    (1)           ,              
    (2)           ,         ,   Number()           
    (3)          ,     ,      valueOf()  ,                
    (4)null undefined    
    (5)        NaN,       false
    (6)           ,