天天看點

【js學習筆記-021】-- 顯式類型轉換

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

繼續閱讀