一、转化为数字类型
1、Number,用来将字符串数字转化为数字
对象类型转化为数字类型,先调用valueOf,再调用toString方法
2、parseInt,只转换整数数字部分,可以转化相关进制的字符串数字,对Number功能的补充
第二个参数为目标进制,有效值为 2~36
二、String
对象类型转化为字符串类型,先调用toString方法,再调用valueOf方法
function test(){
console.log(123)
}
console.log(String(test))
console.log(test.toString())
两个结果一样,因为都是打印test.toString()的返回值。
三、Boolean
== 、===、>、>、if、while、!、!!、&&、||等转换为boolean
1、undefined和null不能用Number转化,两者之间相等
2、NaN参与的运算等返回NaN
3、如果是相同引用类型,会判断存的指针(堆内存地址),所以
console.log( [] == [] ) => false
console.log( {} == {} ) => false
4、如果是对象,先调用valueOf,没有返回原始值的话,调用toString,再调用原始值包装类型原型上的toString方法。
console.log( {} == !{} ) => false
console.log( [] == ![])
//1.左边调用Array.prototype.toString 返回空字符串
//2.Number('') => 0
//3.左边先转化为boolean, true
//4.再取反值,得到false
//5.右边再转化为number,Number( false ) => 0
//6.所以两边转化为 0 ,相等。
console.log( {} == !{} )
console.log( [1,2] == NaN )
//1. 左边调用toString,得到字符串 '1,2'
//2. '1,2' 转化为数字,得到 NaN
//3. NaN == NaN =>false
console.log({} != {}) // => 比较地址,不相等所以返回 true
console.log({} != !{}) // => NaN != 0,NaN参与的不相等比较都返回true,即使是NaN与NaN之间的比较。