【发布时间】:2020-10-24 15:06:44
【问题描述】:
什么是最有效和最安全的方法将十进制 整数 字符串转换为时间关键的循环或函数中的数字,其中有数千个(有时是 100 的数千个)不同的数字字符串 (但都是整数)。
我知道以下三 (3) 种 JavaScript 方法。不确定是否有其他方法可以更有效地完成任务。
-
Number() 将字符串或其他值转换为 Number 类型。如果值不能转换,则返回 NaN。
-
parseInt() 解析字符串参数并返回指定基数的“整数”。
-
'+'前缀字符串会将字符串转换为数字类型。
这也会受到实施、系统或环境/浏览器的影响吗?
我运行了以下测试示例,以确保每个方法的输出结果正确为数字类型。
// ------- test -------
let MyInegerString = "12345678901";
let n1 = Number(MyInegerString);
let n2 = parseInt(MyInegerString);
let n3 = + MyInegerString;
console.log("n1 using Number() is now a "+typeof(n1)); // "number"
console.log("n2 using parseInt() is now a "+typeof(n2)); // "number"
console.log("n3 using '+' is now a "+typeof(n3)); // "number"
【问题讨论】:
-
我不确定是否存在“十进制整数字符串”之类的东西。您的意思是将字符串转换为数字? JS不关心数字是否为整数。
-
您是否对列出的选项进行了任何基准测试以找出答案?
-
如果我必须选择,我认为
Number()会是最慢的,但它依赖于实现,并且几乎都将以相同的速度运行。 -
我会担心为什么在用户浏览器中执行如此重要的操作。
-
测量测量测量。
标签: javascript type-conversion numbers