一. 其他值 ---> 字符串 string
转换规则
- unll 、undefined -----> 'null' 、'undefined'
- boolean类型 true 、false -----> 'true' 、'false'
- number类型 直接转
- symbol类型 直接转
console.log(Symbol('a').toString())
console.log(Symbol("a"))
一个是 symbol 类型 ,一个是 string 类型!!!
转换方法
toString() / String()
<1> toString() 方法 [ 强制 ]
几乎所有值都有 toString() 方法 ,一般 toString() 方法不接收任何参数,但如果是在数值上调用该方法,就可以向 toString() 方法传参,表示要把该数值依据
n进制
进行转换成!!!
- null 和 undefined 类型没有该方法,所以如果要将它俩转换为字符串,需要使用其他方法!!!
<2> 转型函数 String() [ 强制 ]
遵循以下规则:
-
如果传入的参数身上有 toString() 方法,就调用该方法
-
如果没有
- String(null) ---> "null" - String(undefined) ---> "undefined"
<3> 使用 + 操作符 [ 隐式 ]
用 + 操作符给一个值加上一个空字符串 "" ,就能得到该值的字符串形式
null + "" = "null"
2 + "" = "2"
二. 其他值 ---> 数值 number
- Number() 用于任何数据类型
- parseInt() 用于字符串
- parseFloat() 用于字符串
<1> Number() 有其他字符,直接NaN
转换规则
-
boolean: true ---> 1 , false ---> 0
-
unll ---> 0
-
undefined ---> NaN
-
string
- 如果字符串中的字符只有数值/"+"/"-",就会返回该数值的十进制形式 - Number("011") ---> 11 , Number("-123") ---> -123 - 如果字符串是有效的十六进制格式,就会返回该十六进制对应的十进制数字 - Number("0xf123") ---> 61731 - 如果字符串为空字符串 "" ,则返回 0 - Number("") ---> 0 - 如果字符串还包含其他字符,eg:"a" ,则返回 NaN - Number("211a") ---> NaN
-
object
- 会先调用 valueOf() 方法,如果返回的是 number 类型的,直接返回; - 如果返回的是 NaN ,则会再调用 toString() 转化为字符串,然后再按照字符串的规则进行转换!!!
补: valueOf() 方法:
该方法返回对象的原始值,eg: 像 number、string、boolean 这些,有自己的原始值包装类型!!那么在它们身上调用 valueOf() 就会返回它们的原始值类型。如果对象没有原始值,就返回该对象本身!!当然可以重写该方法,返回自己想返回的值!!!
Number(1).valueOf() // 1
<2> parseInt(str , [ n ] ) string ---> 整数number [ 第一个不是空格or数字or(+/-) 直接 NaN ]
转换规则
-
从字符串的第一个非空格字符开始:
- 如果第一个非空格字符不是数值/符号+/符号- , 直接返回 NaN
-
空字符串""也会返回NaN
- parseInt("") // NaN
-
会从第一个可转化的字符开始,一直到碰到非数值字符,就会停止转换!!
- parseInt("1234BLUE") // 1234
-
只能识别整数部分
- paseInt("22.5") // 22
-
可以识别不同的整数格式,给第二个参数传入,按照多少进制的格式即可
- parseInt("AF" , 16) //175
<3> parseFloat(str) string ----> number [ 只能识别十进制 ]
转换规则
- 跟上述的 parseInt() 类似,只是只能识别十进制 ,且可以识别小数部分
parseInt("1234BLUE") // 1234
paseInt("22.5") // 22
三. 其他值 ---> 布尔值
假值的类型:
- undefined
- null
- 0 、NaN 、+0 、-0
- ""
注意:
- {} 转为布尔值为 true