27-转换成数字
3.19.1 转换成数字
字符串转数字是一种很常见的场景。当收集用户的输入时,用户输入的数据通常是字符串,即便想要收集的是数字。JavaScript提供一组方法用来将字符串转换成数字。第一种是使用Number对象的构造方法:[6]
const numStr = "33.3";
const num = Number(numStr); // 创建了一个数值,*不是*一个Number对象的实例
如果字符串内容不符合数字格式,就会返回NaN。
第二种方式是使用内置函数 parseInt 和 parseFloat 。它们的行为跟 Number 的构造方法非常类似,但有一些不同之处。使用 parseInt 时,可以指定一个基数,它代表要将数字转换成什么样的格式(译者注:比如十进制,十六进制等)。例如,可以指定一个基数16用来解析十六进制数。建议始终明确指定一个基数,甚至为默认值10的时候。 parseInt 和 parseFloat 都会忽略任何跟数字不相关的信息,这允许插入一些不相干的字符。比如下面的例子:
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;