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

一些例子:

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


当前回答

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

其他回答

我喜欢前两个,因为它们更容易阅读。我倾向于使用String(n),但这只是一个风格问题。

除非你有一行

var n = 5;
console.log ("the number is: " + n);

这不言自明吗

当我有时间的时候,我会用更多的数据重新编辑这个,现在这是好的…

测试在nodejs v8.11.2: 2018/06/06

let i=0; console.time("test1") for(;i<10000000;i=i+1){ const string = "" + 1234; } console.timeEnd("test1") i=0; console.time("test1.1") for(;i<10000000;i=i+1){ const string = '' + 1234; } console.timeEnd("test1.1") i=0; console.time("test1.2") for(;i<10000000;i=i+1){ const string = `` + 1234; } console.timeEnd("test1.2") i=0; console.time("test1.3") for(;i<10000000;i=i+1){ const string = 1234 + ''; } console.timeEnd("test1.3") i=0; console.time("test2") for(;i<10000000;i=i+1){ const string = (1234).toString(); } console.timeEnd("test2") i=0; console.time("test3") for(;i<10000000;i=i+1){ const string = String(1234); } console.timeEnd("test3") i=0; console.time("test4") for(;i<10000000;i=i+1){ const string = `${1234}`; } console.timeEnd("test4") i=0; console.time("test5") for(;i<10000000;i=i+1){ const string = 1234..toString(); } console.timeEnd("test5") i=0; console.time("test6") for(;i<10000000;i=i+1){ const string = 1234 .toString(); } console.timeEnd("test6")

输出

test1: 72.268ms
test1.1: 61.086ms
test1.2: 66.854ms
test1.3: 63.698ms
test2: 207.912ms
test3: 81.987ms
test4: 59.752ms
test5: 213.136ms
test6: 204.869ms

是这样的:

var foo = 45;
var bar = '' + foo;

实际上,尽管我这样做是为了简单方便,经过1000次迭代后它看起来是为了原始速度。tostring()有一个优势

请参阅这里的性能测试(不是我写的,而是我自己写的时候发现的): http://jsben.ch/#/ghQYR

基于上面的JSPerf测试的最快速度:str = num.toString();

值得注意的是,当您考虑到它可以在0.1秒内以任何方式进行100万次转换时,速度上的差异并不太显著。

更新:不同浏览器的速度似乎差别很大。在Chrome中num +”似乎是最快的基于这个测试http://jsben.ch/#/ghQYR

更新2:根据我上面的测试,应该注意到Firefox 20.0.1执行. tostring()的速度比“+ num”示例慢了大约100倍。

在我看来,n.toString()因其清晰性而获得奖励,并且我不认为它会带来任何额外的开销。

我使用https://jsperf.com为以下用例创建了一个测试用例:

number + ''
`${number}`
String(number)
number.toString()

https://jsperf.com/number-string-conversion-speed-comparison

截至2018年7月24日,结果显示,在Chrome中,数字+”是最快的,在Firefox中,它与模板字符串文字相关联。

String(number)和number. tostring()都比最快的选项慢95%左右。