JavaScriptデータタイプの強制変換

4273 ワード

私のブログ
javascriptデータタイプは、基本データタイプと参照データタイプに分けられます.
基本データ:Number、Boolean、Unidefined、Null、String;
引用データ:Object;
0.000...01の場合、小数点以下7桁以上の場合、自動的に科学的なカウントに変換されます.
20000...00の場合、整数部分が22桁以上の場合、自動的に科学的カウントに変換されます.
Number(x):一つのパラメータ;
  • パラメータがNumberタイプの場合:正確に出力できます.
  • console.log(Number(1));        //1
    console.log(Number(1e-7));    //1e-7
    console.log(Number(0b111));  //7
    console.log(Number(NaN));   //NaN
    
  • パラメータがBooleanタイプの場合:true->1;fasle->0
  • console.log(Number(true));  //1
    console.log(Number(false)); //0
    
  • パラメータがundefinedの場合:NaN
  • の値です.
    console.log(Number(undefined)); //NaN
    
  • パラメータがnullの場合:
  • console.log(Number(null));    //0
    
  • パラメータがStringタイプの場合:
  • //     
    console.log(Number("123"));   //123
    console.log(Number("-123"));  //-123
    console.log(Number("12.3"));  //12.3
    console.log(Number("1e-7"));  //1e-7
    console.log(Number("0xff"));  //255
    console.log(Number("00123")); //123	
    console.log(Number("   123")); //123
    console.log(Number("\t
    123")); //123
    //  +         
    console.log(Number('a123'));  //NaN
    console.log(Number("false")); //NaN
    console.log(Number("a123"));  //NaN
    
    
    //         
    console.log(Number("\t
    ")); //0 console.log(Number(" ")); //0 console.log(Number("")); //0
  • パラメータタイプが対象の場合:先に行います.valueOf()は、得られた時に対象がString()を行い、基本データタイプが得られるまでは、例えば{}.valueOf().tostring()=「[object Object]」の最後のnumberの結果がNaNです.
  • console.log(Number({}));  //NaN
    console.log(Number([1])); //1
    console.log(Number([1,2]));  //NaN
    cosole.log(Number([]));    //0
    
    parseInt(x,y):2つのパラメータ、
    フローは、Stering(x)を文字列にしてから、この値をy進数でベースにして十進数に変えて、10としないでください.yの範囲:[2,36]
    パラメータyがない場合:
  • xパラメータがnumberの場合:注意が必要です.⚠️のは0.001,1 e-7タイプの値で、小数点(e)以下の値を切り捨てて前の値に戻ります.
  • console.log(parseInt(123));   //123
    console.log(parseInt(1e-7));  //1
    console.log(parseInt(0xff));  //255
    console.log(parseInt(NaN));   //NaN
    console.log(parseInt(0.00001)); //0
    
  • xパラメータはbollan、undefined、nullの場合:
  • console.log(parseInt(true));  //NaN
    console.log(parseInt(false)); //NaN
    console.log(parseInt(undefined)); //NaN
    console.log(parseInt(null));    //NaN
    
  • xパラメータがStringタイプの場合:注意すべき時空列、スペース文字列、数字+文字
  • 
    console.log(parseInt(""));   //NaN
    console.log(parseInt("-123"));  //-123
    console.log(parseInt("  "));  //NaN
    console.log(parseInt("\t
    ")); //NaN console.log(parseInt("a123")); //NaN console.log(parseInt("123a")); //123
  • パラメータxを対象とした場合:同じように.valueOf()を通じて、得られた時に対象がString()を行い、基本データタイプが得られるまで上記規則に従って出力する
  • console.log(parseInt({1:2}));   //"[object Object]"->NaN
    console.log(parseInt([]));      //""->NaN
    console.log(parseInt([1,2]));   //"1,2"->//1
    
  • パラメータx,y,yが0,null,undefined,NaNの場合、yを無視してデフォルトで10,[2,36]の範囲を超えるとNaNに戻り、x値がy進数で表されるとNaNに戻り、残りは数桁で
  • となります.
    console.log(parseInt("f",2));   //NaN
    console.log(parseInt("11f",2);  //3
    console.log(parseInt("123",37)); //NaN
    console.log(parseInt("0xff",0));  //255
    console.log(parseInt("0xff",NaN)); //255
    console.log(parseInt("ff",[]));  //NaN
    
    パーrseFloat(x):一つのパラメータは、浮動小数点および科学的計数法を正確に表すことができますが、文字列の進数は正確には表現できません.残りはパー秒Int(x,10)と同じです.
    console.log(parseFloat(0xff));  //255
    console.log(parseFloat("0xff"));  //0  
    console.log(parseInt("0xff"));   //255      parseInt(x,y) y          
    console.log(parseFloat(1e22));   //1e22
    console.log(parseFloat(1e-7));   //1e-7
    console.log(parseFloat("00123"));  //123
    console.log(parseFloat(" "));     //NaN
    
    
    String()、toString()
  • 第一:undefined、nullはtoString()属性がないので、String(undefiend)
  • を通すしかない.
  • 第二:y.toString(x)は、目標値yをx進数に変換する値
  • を意味する.
    console.log(String(null));  //"null"
    console.log(0xff.toString(2));  //"11111111"
    console.log(oxff.toString()); //"255"     10