javascript可以做靈活的類型轉換,是以其”==”相等運作算也随相等的含義靈活多變,例如下面的結果均為ture.
null == undefined
“0” == 0 //比較之前字元串轉換為數字
0==false //比較之前布爾值轉換為數字
“0” == false //比較之前字元串和布爾值都轉換為數字
注意:一個值轉換為另一個值,并不意味着兩個值相等。比如,如果在期望使用布爾值的地方使用了undefined,它将轉換為false,但這并不表明undefined==false。僅是在運作符和語句期望使用多樣化的資料類型,并可以互相轉換。If語句将undefined轉換為false,但“==”從不試圖将操作數轉換為布爾!
js提供了自動類型轉換,但有時仍需要要顯示轉換,或者為了使代碼變得清晰易讀(個人覺得這個比較重要)
使用String(),Number(),Boolean(),Object()
Number(“3”) //=>3
String(“false”) //=>”false”或使用false.toString()
Boolean([]) //=>true
Object(3) //=>new Number(3)
試圖将null和 undefined轉為對象會報TypeError,使用Object()函數不會報異常,它僅簡單的傳回一個新的空對象。
運算符隐式類型轉換
x+”” //等價于String(x)
+x //等價于Number(x)
!!x //等價于Boolean(x)
JS提供了數字到字元串和字元串到數字的轉換
Number類定義了toString方法可以接收表示轉換基數的參數。如果不指定就是十進制。如:
var n=17;
binary_string= n.toString(2);
octal_string= n.toString(8);
hex_string= n.toString(16);
當做财務處理和科學計算時可以使用:
toFixed() //小數點後的指定位數來将數字轉換為字元串,從不使用科學記數法
toExponential() //指數記數法将數字轉換為指數形式的字元串,其中小數點前隻有一位
toPercision() //根據指定的有效數字位數将數字轉換成字元串
注意:所有三種方法都會适當地進行四舍五入或填充0
例如:var n=123456.789;
n.toFixed(0) //”123457”
n.toFixed(2) //”123456.79”
n.toFixed(5) //”123456.78900”;
n.toExponential(1)//1.2e+5
n.toExponential(3)//1.235e+5
n.toPercision(4) //1.235e+5
n.toPercision(7) //123456.8
n.toPercision(10)//123456.7890
如果通過Number()轉換函數傳入一個字元串,它會試圖将其轉換為一個整數或浮點數直接量,這個方法隻能基于10進制轉換。
parseInt()和parseFloat()更加靈活一些
可有在字串中使用字首”0x”或”0X”
parseInt(“0xff”) //=>255
parseInt(“.1”) //=>NaN 不能以.開始
parseFloat(“$72.47”) //=>NaN不能以$開始
parseInt()可以接收兩個參數,第二個參數合法取範圍2~36如:
parseInt(“11”,2) //=>3
parseInt(“ff”,16) //=>255