转为字符串
toString()
String()
全局函数 window.String()
btoa():任意值转为 Base64 编码
atob():Base64 编码转为原来的值
(1).toString() // '1'
true.toString() // 'true'
null.toString() // error:Cannot read property 'toString' of null
undefined.toString() // error:Cannot read property 'toString' of undefined
String(null) // 'null'
window.String(null) // 'null'
var string = 'Hello World!';
btoa(string) // "SGVsbG8gV29ybGQh"
atob('SGVsbG8gV29ybGQh') // "Hello World!"
老司机 用 +'' 来实现
1 + '' // '1'
true + '' // 'true'
null + '' // 'null'
undefined + '' // 'undefined'
var obj = {}
obj + '' // '[object Object]'
1 + '1' // 等于(1).toString + '1' -> '11'
转为布尔
Boolean()
除了5个 faley 值返回 false ,其他都返回 true
5个 faley 值:undefined 、 null 、 0 、NaN 、 ""或''(空字符串)
Boolean(1) // true
Boolean(0) // false
Boolean(NaN) // false
Boolean('') // 空字符串false
Boolean(' ') // 空格字符串true
Boolean(null) // false
Boolean(undefined) // false
Boolean({}) // 空对象true
Boolean([]) // 空数组true
老司机 在左边加 !! 来实现(取反再取反)
!!1 // true
!!0 // false
!!NaN // false
!!'' // false
!!' ' // true
!!null // false
!!undefined // false
!!{} // true
!![] // true
转为数值
Number()
当转换的内容包含非数字的时候,Number() 会返回 NaN
parseInt()
如果以数字开头,parseInt() 返回开头的合法的数字部分,否则返回 NaN
parseFloat()
Number('1') // 1
parseInt('1') // 1
parseInt('011') // 11,这是十进制
parseInt('011',8) // 9 如果后面加8变成八进制
parseInt('aaaa') // NaN
parseInt('1aaaaa') // 1
parseFloat('1.23') // 1.23
老司机 用 -0 来实现
'1' - 0 // 1
'1.23' - 0 // 1.23
+ '1' // 1
+ '1.23' // 1.23
+ '.1' // 0.1
+ '-1' // -1
-'-1' // 1
1 + '1' // '11'
1 + '1' - 0 // 11
1 + ('1' - 0) // 2
1 + + '1' // 2