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