JS学习——类型转换

103 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第16天,点击查看活动详情

前言

类型之间的转换是常见的需求,比如布尔值转换为数字。怎么能够快速准确的进行类型转换?今天我们来学习JS类型之间的转换方法。

转换形式

转换分为显式转换隐式转换,显式转换就是利用方法完成类型转换;隐式转换是在运算符运行过程中自动帮我们转换类型,隐式转换在开发中经常碰到,要理解这是JS机制帮我们转换的。

隐式转换

正如上面所述,隐式转换与运算符有关。

  • 算数运算符:当我们利用+、-、>等算数运算符时,就会进行隐式转换,运算符会将后面结果转换number类型。不能转为数字的会变成NaN。需要主要'+',当字符串用+连接其他类型时都会转换为string
       const str = '123'
       const str1 = '123abc'
       const flag = true
       console.log(+flag)//1 true为1 false为0
       console.log(+str)//123
       console.log(str-2)//121
       console.log(str+2)//'1232'
       console.log(-str1)//NaN
  • 相等运算符:==(相等)、===(严格相等)。 number比较string,string会转为number; boolean比较任何值,boolean会转为number(0/1) 引用类型比较基本类型,会将引用类型转为字符串
  • 逻辑运算符:!、&&、||等运算会将计算项转为boolean。!返回的是与计算项相反的布尔值
       const str = '123'
       const num = 0
       console.log(!str)//false
       console.log(!num)//true

显式转换

显式转换就需要用到各种方法:

转为string

  • toFixed(n):将数字转为保留n位小数的字符串
  • toPrecision(n):将数字转为长度为n的字符串返回。会进行四舍五入
  • toString():通用方法,可以将数字、布尔等转为字符串。
      const num = 123
      const float = 123.456
      const flag = false
      console.log(num.toString())//'123'
      console.log(float.toFixed(2))//'123.46'
      console.log(float.toPrecision(4))//'123.5'
      console.log(flag.toString())//'false'

转为number

  • Number():通用方法,将字符串、布尔等转为number类型,不能转换返回NaN
  • parseInt():将字符串转为number,返回值为整数。
  • parseFloat():同样将字符串转为number,返回浮点型。
      const str = '123a'
      const str1 = 'a123'
      const str2 = '123.123'
      const flag = true
      console.log(Number(flag));//1
      console.log(Number(str))//NaN
      console.log(parseInt(str))//123 数字开头只会将数字提取处理
      console.log(parseInt(str1))//NaN 字母等开头就会NaN
      console.log(parseFloat(str2))//123.123

总结

以上就是类型转换的一些方法,特别是隐式转换,掌握了能让我们更方便地进行类型的转换。显式转换的一些方法toFixed(),注意返回结果的类型,不然就会出现问题。