将数字转换为字符串的“最佳”方法是什么(从速度优势、清晰度优势、内存优势等方面考虑)?

一些例子:

字符串(n) n.toString() “”+n n+“”


当前回答

方法toFixed()也可以解决这个问题。

var n = 8.434332;
n.toFixed(2)  // 8.43

其他回答

当使用node.js时,结果似乎类似。我运行这个脚本:

let bar;
let foo = ["45","foo"];

console.time('string concat testing');
for (let i = 0; i < 10000000; i++) {
    bar = "" + foo;
}
console.timeEnd('string concat testing');


console.time("string obj testing");
for (let i = 0; i < 10000000; i++) {
    bar = String(foo);
}
console.timeEnd("string obj testing");

console.time("string both");
for (let i = 0; i < 10000000; i++) {
    bar = "" + foo + "";
}
console.timeEnd("string both");

并得到以下结果:

❯ node testing.js
string concat testing: 2802.542ms
string obj testing: 3374.530ms
string both: 2660.023ms

每次运行的时间都差不多。

如果需要将结果格式化为特定的小数位数,例如表示货币,则需要类似toFixed()方法的东西。

number.toFixed( [digits] )

数字是小数点后要显示的位数。

. tostring()是内置类型转换函数,我不是这方面的专家,但每当我们比较内置类型转换和显式方法时,内置的解决方案总是首选。

我们还可以使用String构造函数。根据这个基准测试,它是在Firefox 58中将数字转换为字符串的最快方法,尽管它比Firefox 58慢 + num在流行浏览器谷歌Chrome。

...JavaScript的解析器尝试进行解析 作为浮点字面值的数字上的点符号。

2..toString(); // the second point is correctly recognized
2 .toString(); // note the space left to the dot
(2).toString(); // 2 is evaluated first