js型別轉換注意點
阿新 • • 發佈:2018-12-25
1、轉換成字串時,使用 String
構造器
constreviewScore=9
// bad
consttotalScore= reviewScore +''// 實際呼叫: reviewScore.valueOf()constobj= {
valueOf: () =>1
}
obj +''// '1' 而不是 '[object Object]'
// bad
consttotalScore= reviewScore.toString() // toString 方法可能被改寫
// good
consttotalScore=String(reviewScore)
2、轉換成數字時,使用 Number
構造器
constinputValue='4'
// bad
constval=+inputValue
// bad
constval=newNumber(inputValue)
// bad/** * JavaScript 位運算完全套用 Java,有三個問題: * 1、位操作針對的是整數,小數部分會被捨棄 * 2、整數不能超過32位 * 3、JavaScript 的數字都是以雙精度浮點數儲存的,實際執行還需要先轉換為整數 */
constval= inputValue >>0
// good
constval=Number(inputValue)
3、解析成整數時,使用 ParseInt
使用 parseInt
時,如果不指定進位制,轉換的變數以 0
開頭(比如一些月份和天),ECMAScript 3 會當作 8 進位制。
constinputValue='200px'
// bad
constval=parseInt(inputValue)
// good
constval=parseInt(inputValue, 10)
4、轉換成 boolean
時,使用 Boolean
構造器或者 !!variable
constage=0
// bad
consthasAge=newBoolean(age)
// good
consthasAge=Boolean(age)
// good
consthasAge=!!age