开启掘金成长之旅!这是我参与「掘金日新计划 · 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(),注意返回结果的类型,不然就会出现问题。