runTest("b* 1", function() { b * 1; }); 綜上比較, 1、本身是數字的字元串轉為數字,parseInt()不帶參數直接轉最快; 2、字元串既包含數字又包含字母的字元串,parseInt()帶10進位的參數更快,但是是所有方法中最慢的; 3、如果是純數字組成的字元 ...
var a = '1'; var b = '0x1'; var runTest = function(timeTag, testFunction) { console.time(timeTag); for (var i = 0; i < 100000000; i++) { testFunction(); } console.timeEnd(timeTag); } runTest("parseInt(a)", function() { parseInt(a); }); runTest("parseInt(a, 10)", function() { parseInt(a, 10); }); runTest("parseInt(b)", function() { parseInt(b); }); runTest("parseInt(b, 10)", function() { parseInt(b, 10); }); runTest("a * 1", function() { a * 1; });
runTest("b* 1", function() {
b * 1;
});
runTest("- 0", function() { a - 0; }); runTest("JSON.parse()", function() { JSON.parse(a); }); runTest("Number(a)", function() { Number(a); }); runTest("Number(b)", function() { Number(b); }); parseInt(a): 537.01025390625ms parseInt(a, 10): 1513.892822265625ms parseInt(b): 20277.371826171875ms parseInt(b, 10): 17531.925048828125ms a* 1: 1101.119140625ms
b* 1: 1193.64794921875ms - 0: 1126.380126953125ms JSON.parse(): 15990.590087890625ms Number(a): 1172.126953125ms Number(b): 1288.054931640625ms
綜上比較,
1、本身是數字的字元串轉為數字,parseInt()不帶參數直接轉最快;
2、字元串既包含數字又包含字母的字元串,parseInt()帶10進位的參數更快,但是是所有方法中最慢的;
3、如果是純數字組成的字元串,可以使用JSON.parse()轉為數字,相比是所有方法中最慢的。
4、Number()方法和乘號、減號方法相差不大。
參考鏈接:https://cnodejs.org/topic/5556c5237cabb7b45ee6bca6
推薦文章:https://blog.fundebug.com/2018/07/07/string-to-number/