JavaScript 中,字符串转数字哪种方法最快?
猜猜看
前一阵子,写 C++ 的黄老板抛过来一个致命问题:
JS 字符串转 int 最快的法子是啥?我有整形的 12 这样数据。
简直瞬间石化。
首先是在我印象里,JS 只有 Number
一个描述数字的类型;其次我很少关心用什么方法能让 JS 执行得更快。那不如这次研究一下。
JS 将 String
转 Number
的方法很多。
parseInt('12');//
Number('12');//这也是我最常用的方法,Number构造函数
~~'12';//只在最初学习语法时见过,按位非
+'12';//一元运算
'12'/1;//运算
'12'*1;//运算
按照 JsPerf 上的测试 +'12'
的速度最快。
但考虑到黄老板手上数据均为整形,我决定再用下面代码,逐行注释掉执行语句在 Node.js
环境中执行,后面数字标记了各次执行结果:
let start = Date.now();
for (let i = 0; i <= 100000000; i++) {
parseInt('12'); //291
Number('12'); //64
~~'12'; //66
+'12'; //61
'12' / 1; //54
'12' * 1; //48
}
let end = Date.now();
console.log(end - start);
看起来,parseInt()
方法又变成最慢的了。这应该涉及到 JS 底层运算的处理问题,后面有机会值得研究一下。
Last modified on 2020-03-04