javaScript基础之类型转换

64 阅读2分钟

强制转换主要指 Number()String()Boolean()

Number()

Number函数将字符串转为数值,要比parseInt函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN。都会自动过滤前缀和后缀的空格。parseInt是Number的补充。

例如:

 Number(undefined) //NaN
 Number('324abc') // NaN
 parseInt('324abc') //324
 paeseInt('abc324') // NaN

String()

  • 数值 String(123) // "123" String('abc') // "abc"
  • 布尔值 String(true) // "true" String(undefined) // "undefined"

对象

如果参数是对象返回一个类型字符串、如果是数组,返回该数组的字符串形式。

    String({a:1}) // "[object Object]"
    String([1,2,3]) // "1,2,3"

.toString()

可以将所有数据类型转为字符串 但要排除null和undefined 括号内可以写数字代表进制 例如:.toString(2) // 2进制

const arr = ['tom',12,'rose',18]
arr.toString() // "tom,12,rose,18"

const date = new Date(2023,07,05)
date.toString() // "Sat Aug 05 2023 00:00:00 GMT+0800 (中国标准时间)"

Boolean()

除了五个转换结果为false,其他都为true。

  `Boolean(undefined) // false`
  `Boolean(null) // false`
  `Boolean(0) // false`
  `Boolean(NaN) // false`
  `Boolean('') // false`

所有对象转换结果都是true。 Boolean({}) // true Boolean([]) // true Boolean(new Boolean(false)) // true

隐式转换规则

当两个不同类型进行抽象比较时(==),js会将它们转为成统一的数据类型,低层级的数据类型像高层级的数据类型转换,直到“==”左右两边数据类型相同,然后比较数据的值是否相同。 例如: ![] == false为true是因为 ! 会将 [] 直接转换成Boolean,在JS中,将其他数据类型转换成Boolean时,只有空字符串("")、0、null、undefined、NaN会转换成false,其他数据都会转换成true,所以空数组([])会被转换成true,![]为false,!![]为true

复杂数据类型转换规则

  • 先使用valueOf()方法获取原始值

  • 再使用toString()转成字符串

  • 再使用number把字符串转成数字