数值 → 其他数据类型
let num = 123;
数值 → 字符串
结果为由该数值组成的字符串
String(num) // 结果为 '123'
String(NaN) // 结果为 'NaN'
num + '' 
num.toString(); 
数值 → 布尔值
- 0 , -0 , NAN 转为布尔值后为 false
- 其他数值转为布尔值后为 true
Boolean(num )
// 取反再取反
!!num 
字符串 → 其他数据类型
let str = '10'
字符串 → 数值
Number(str )
- 如果字符串中是纯数字,则直接将其转换为数字。
- 如果字符串中有非数字的内容,则转换为NaN。
- 如果字符串是一个空串或者是一个全是空格的字符串,则转换为0。
字符串 → 布尔值
- 空字符串转为布尔值后,值为 false
- 其余字符串转为布尔值后,值是 true
Boolean(str)
// 取反再取反
!!str
布尔值 → 其他数据类型
布尔值 → 数值
Number(true) // 结果为:1
Number(false) // 结果为:0
布尔值 → 字符串
- true 转为字符串为 'true'
- false 转为字符串为 'false '
String(true)
true  + '' 
true.toString(); 
null → 其他数据类型
null → 数值
Number(null) // 结果为:0
null → 字符串
String(null) // 结果为 ‘null’
null + '' 
null.toString(); 
null → 布尔值
Boolean(null) // 结果为 false
// 取反再取反
!!null
undefined → 其他数据类型
undefined → 数值
Number(undefined) // 结果为:NaN
undefined → 字符串
String(undefined) // 结果为 ‘undefined’
undefined + '' 
undefined.toString(); 
undefined → 布尔值
Boolean(undefined) // 结果为 false
// 取反再取反
!!undefined