在JavaScript中将数字转换为string的最佳方法是什么?

将数字转换为string(就速度优势,清晰度优势,内存优势等而言)是什么“最佳”方式?

一些例子:

  1. String(n)

  2. n.toString()

  3. ""+n

  4. n+""

喜欢这个:

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

实际上,尽pipe我通常这样做是为了方便起见,但是对于原始速度来说 ,超过1000次的迭代对于.toString()

在这里看到性能testing(不是由我,而是当我去写自己的时候发现): http : //jsben.ch/#/ghQYR

最快的基于上面的JSPerftesting: str = num.toString();

应该注意的是,当你考虑到它可以在0.1秒内以任何方式进行100万次的转换时,速度的差别不是太重要。

更新:浏览器的速度似乎差别很大。 在Chrome中,“ num + ''似乎是基于此testinghttp://jsben.ch/#/ghQYR的最快速度

更新2:再次基于我上面的testing,应该指出的是,Firefox 20.0.1执行.toString()'' + num样本慢大约100倍。

在我看来, n.toString()是为了清晰起见而获奖的,我不认为它会带来额外的开销。

明确的转换对于那些对语言不熟悉的人来说是非常清楚的。 如其他人所暗示的那样,使用types强制,如果开发者不知道强制规则,就会导致模糊。 最终开发人员的时间比CPU时间成本更高,所以我会以后者为代价优化前者。 这就是说,在这种情况下,差异可能是微不足道的,但如果不是,我敢肯定,有一些体面的JavaScript压缩机,将优化这种事情。

所以,由于上述原因,我会去: n.toString()String(n)String(n)可能是一个更好的select,因为如果n为null或未定义,它不会失败。

将任何variables转换为string的最简单方法是向该variables添加一个空string。

 5.41 + '' // Result: the string '5.41' Math.PI + '' // Result: the string '3.141592653589793' 
 2..toString(); // the second point is correctly recognized 2 .toString(); // note the space left to the dot (2).toString(); // 2 is evaluated first 

资源

舌头很明显:

 var harshNum = 108; "".split.call(harshNum,"").join(""); 

或者在ES6中,您可以简单地使用模板string :

 var harshNum = 108; `${harshNum}`; 

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

那是除非你有一条线

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

这是非常自我解释

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

 number.toFixed( [digits] ) 

digits是小数点后显示的位数。

我认为这取决于情况,但无论如何,您可以使用.toString()方法,因为它非常清楚地理解。

如果我不得不考虑一切,我会build议如下

 var myint = 1; var mystring = myint + ''; /*or int to string*/ myint = myint + '' 

恕我直言,它是最快的方式转换为string。 纠正我,如果我错了。

如果您好奇哪个是最高性能的,请检查一下我在哪里比较所有不同的Number – > String转换。

看起来像2+''2+""是最快的。

https://jsperf.com/int-2-string