一、转化为数字类型
    1、Number,用来将字符串数字转化为数字
    对象类型转化为数字类型,先调用valueOf,再调用toString方法
    2、parseInt,只转换整数数字部分,可以转化相关进制的字符串数字,对Number功能的补充
    第二个参数为目标进制,有效值为 2~36

    二、String
    对象类型转化为字符串类型,先调用toString方法,再调用valueOf方法

    1. function test(){
    2. console.log(123)
    3. }
    4. console.log(String(test))
    5. console.log(test.toString())
    6. 两个结果一样,因为都是打印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

    1. console.log( [] == ![])
    2. //1.左边调用Array.prototype.toString 返回空字符串
    3. //2.Number('') => 0
    4. //3.左边先转化为boolean, true
    5. //4.再取反值,得到false
    6. //5.右边再转化为number,Number( false ) => 0
    7. //6.所以两边转化为 0 ,相等。
    8. console.log( {} == !{} )
    9. console.log( [1,2] == NaN )
    10. //1. 左边调用toString,得到字符串 '1,2'
    11. //2. '1,2' 转化为数字,得到 NaN
    12. //3. NaN == NaN =>false
    13. console.log({} != {}) // => 比较地址,不相等所以返回 true
    14. console.log({} != !{}) // => NaN != 0,NaN参与的不相等比较都返回true,即使是NaN与NaN之间的比较。