有3个函数可以将非数值转换为数值:

Number()、parseInt()和parseFloat()。Number()是转型函数,可用于任何数据类型。

后两个函数主要用于将字符串转换为数值。对于同样的参数,这3个函数执行的操作也不同。

Number()函数基于如下规则执行转换。

❑ 布尔值,true转换为1,false转换为0。

❑ 数值,直接返回。❑ null,返回0。

❑ undefined,返回NaN。

❑ 字符串,应用以下规则。

■ 如果字符串包含数值字符,包括数值字符前面带加、减号的情况,则转换为一个十进制数值。因此,Number("1")返回1, Number("123")返回123, Number("011")返回11(忽略前面的零)。

■ 如果字符串包含有效的浮点值格式如"1.1",则会转换为相应的浮点值(同样,忽略前面的零)。

■ 如果字符串包含有效的十六进制格式如"0xf",则会转换为与该十六进制值对应的十进制整数值。

■ 如果是空字符串(不包含字符),则返回0。

■ 如果字符串包含除上述情况之外的其他字符,则返回NaN。

❑ 对象,调用valueOf()方法,并按照上述规则转换返回的值。如果转换结果是NaN,则调用toString()方法,再按照转换字符串的规则转换。