即使JavaScript是一种松散类型的语言,你也可能需要将一个值从一个类型转换为另一个类型。
在JavaScript中,我们有那些原始的类型。
NumberStringBooleanSymbol
和对象类型。
Object
(另外还有null 和undefined ,但从/到它们的转换没有意义)
例如,你可能想转换。
- 一个数字到一个字符串
- 字符串转为数字
- 字符串转为布尔值
- 布尔值转换为字符串
...等等。
下面是你可以用来从一种类型转换到另一种类型的技术。我涵盖了最常见的情况。
转换到字符串
一般来说,从任何东西转换为字符串通常是在任何值上调用toString() 方法,JavaScript将创建一个与该类型相对应的字符串值。或者你可以把任何值传递给String() 全局函数。
从数字到字符串的转换
使用String全局函数,或者Number类型的toString() 方法。
String(10) //"10"
(10).toString() //"10"
从布尔型到字符串的转换
使用字符串全局函数,或布尔类型toString() 。
String(true) //"true"
true.toString() //"true"
String(false) //"false"
false.toString() //"false"
从日期到字符串的转换
使用字符串全局函数,或者日期类型toString() 方法。
String(new Date('2019-01-22'))
//"Tue Jan 22 2019 01:00:00 GMT+0100 (Central European Standard Time)"
(new Date('2019-01-22')).toString()
//"Tue Jan 22 2019 01:00:00 GMT+0100 (Central European Standard Time)"
字符串的特殊情况
String(null) //"null"
String(undefined) //"undefined"
String(NaN) //"NaN"
转换为数字
从字符串到数字的转换
我们可以通过使用Number() 全局函数来做到这一点,它有点像一个构造函数。我们可以传给它一个字符串,JavaScript会想办法把它转换成一个数字。
Number("1") //1
Number("0") //0
字符串在转换为数字之前会被修剪。
传递一个空字符串时,默认为0。
而要与小数一起工作,你可以使用一个点。
如果一个字符串包含无效的字符,它将产生一个NaN 。
这就是转换数字的基本原理,但我在如何在JavaScript中把字符串转换为数字的过程中给出了更多的细节。还有其他一些从字符串生成数字的方法,包括parseInt() 、parseFloat() 、Math.floor() 、单数+ 操作符。
从布尔值到数字的转换
就像我们对字符串所做的那样,将一个布尔值传递给Number() ,将返回0或1。
Number(true) //1
Number(false) //0
从日期到数字的转换
如果你把一个Date对象传给Number() ,它将返回日期时间戳,这是你能得到的最好的日期到数字的转换。
数字的特殊情况
Number(null) //0
Number(undefined) //NaN
Number(NaN) //NaN
转换为布尔值
任何值都可以转换为布尔值,将其传递给Boolean() 。
所有的值都会解析为true ,除了。
Boolean(false) //false
Boolean(0) //false
Boolean(NaN) //false
Boolean("") //false
Boolean(null) //false
Boolean(undefined) //false