当前位置:嗨网首页>书籍在线阅读

27-转换成数字

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

3.19.1 转换成数字

字符串转数字是一种很常见的场景。当收集用户的输入时,用户输入的数据通常是字符串,即便想要收集的是数字。JavaScript提供一组方法用来将字符串转换成数字。第一种是使用Number对象的构造方法:[6]

const numStr = "33.3";
const num = Number(numStr);   // 创建了一个数值,*不是*一个Number对象的实例

如果字符串内容不符合数字格式,就会返回NaN。

第二种方式是使用内置函数 parseIntparseFloat 。它们的行为跟 Number 的构造方法非常类似,但有一些不同之处。使用 parseInt 时,可以指定一个基数,它代表要将数字转换成什么样的格式(译者注:比如十进制,十六进制等)。例如,可以指定一个基数16用来解析十六进制数。建议始终明确指定一个基数,甚至为默认值10的时候。 parseIntparseFloat 都会忽略任何跟数字不相关的信息,这允许插入一些不相干的字符。比如下面的例子:

const a = parseInt("16 volts", 10); // " volts" 被忽略, 16被当做十进制数解析
const b = parseInt("3a", 16);       // 解析十六进制数 3a; 结果为 58
const c = parseFloat("15.5 kph");   // " kph" 被忽略; 
                                    //parseFloat始终假定参数为十进制数

日期对象也可以转成数字,转换后的结果代表从1970年1月1日凌晨0:00到当前时间的毫秒数。使用的是 valueOf() 方法:

const d = new Date();         // 当前日期
const ts = d.valueOf();       // 数字值: 距离UTC 1970.1.1 00:00:00的毫秒数

有时,将布尔值转换成1(true)或0(false)会非常有用。可以使用条件操作符(会在第5章学到)来完成转换:

const b = true;
const n = b ? 1 : 0;