首页 > Note > JavaScript中的数据类型转换

JavaScript中的数据类型转换

这里总结了JavaScript中常见的数据类型转换

1 字符串 to 数值

显式转换

通常的做法是使用 Number()parseInt() , parseFloat() 函数。需要注意的是, Number() 的参数不能含有非数字字符串值 ,如 Number(100x) 会得到 Nan, 而 parseInt(), parseFloat() 则是参数的第一个字符不可以是非数字,否则会得到 Nan, 而且它会忽略第一个非数字的字符串之后的所有字符。

对于 parseInt() 函数来说,可以指定进制。早期版本的 JavaScript 默认执行 8 进制转换,而新版本使用 10 进制 进行转换。如果需要保证兼容性,则需要带上第二个参数:

隐式转换

数值的字符串变量(指可以通过 Number函数转换为数值的字符串,本节中的字符串均指可以通过 Number() 转换为数值的字符串) 在遇到数值运算符时可能发生隐式转换:

对于减法运算,总是可以转换为数值 :

对于加法运算,如果两个操作数中有一个为字符串,则结果会转换成字符串 :

这是因为此时 “+” 的意义为字符串连接操作符。

不过还有一种情况:

此时 “+” 运算符没有实质的意义,其作用就仅仅是将字符串值转换为数值。

2 数值 to 字符串

显式转换

通常是使用 String() 函数 或 toString() 函数

注意,在使用字面量直接调用 toString() 函数的时候, 为了避免点号到底是小数点还是点运算符,我们需要给字面量加上括号。

隐式转换

如上节所示,使用 “+” 运算符可以将数值隐式地转换为字符串:

3 字符串<->数值 转换的惯用法

从前两节可以看到字符串和数值之间的类型转换有多种方法。具体到哪种方法速度更快,不能一概而论,这要看具体的实现。使用显式转换可读性更好,而使用隐式转换代码更简洁更有利于传输。一般我们会使用空字符串来进行隐式地转换:

4 转换为布尔型

在 javaScript 的条件语句中(如 ifwhile 语句),任何值都将被转换为布尔类型。

下面这种情况将会被转换成 false :

  • 数值 0
  • 数值 Nan
  • null 值
  • undefine 值
  • 空字符串值 ”

除此之外的其他情况将会被转换成 true

还可以使用 Boolean() 来进行显式转换,或者使用 逻辑非运算符 ‘!’ 来进行转换:

5 Object 类型 to 基本类型

假设 obj 为一个 Object 类型的对象,则有:

  • String(obj) 将调用 toString(obj) 方法
  • Number(obj) 将优先调用 valueOf(obj) 方法,如果 valueOf(Obj) 的结果无法被转换为数值型,则再调用 toString(obj) 方法
  • Boolean(obj) 总是 true

如下示例:

6 基本类型 to Object 类型

基本类型转换为 Object 类型一般使用其对应的类,如字符串使用 String 类,数值使用 Number 类, 布尔使用 Boolean

 

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.