JS -- (3) 数据类型转换 string 、number、boolean

64 阅读3分钟

一. 其他值 ---> 字符串 string

转换规则

  • unllundefined -----> 'null' 、'undefined'
  • boolean类型 true 、false -----> 'true' 、'false'
  • number类型 直接转
  • symbol类型 直接转
console.log(Symbol('a').toString())
console.log(Symbol("a"))

2131.png

一个是 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