将数字转换为字符串的“最佳”方法是什么(从速度优势、清晰度优势、内存优势等方面考虑)?
一些例子:
字符串(n) n.toString() “”+n n+“”
将数字转换为字符串的“最佳”方法是什么(从速度优势、清晰度优势、内存优势等方面考虑)?
一些例子:
字符串(n) n.toString() “”+n n+“”
当前回答
其他答案已经涵盖了其他选项,但我更喜欢这个:
s = `${n}`
简短,简洁,已经在许多其他地方使用过(如果您使用的是现代框架/ ES版本),所以任何程序员都能理解它。
这(通常)不是很重要,但与其他方法相比,它似乎也是最快的方法之一。
其他回答
对于数字字面值,访问属性的点必须与十进制点区分。如果你想在数字文字123上调用to String(),这留给你以下选项:
123..toString()
123 .toString() // space before the dot 123.0.toString()
(123).toString()
你可以调用Number对象,然后调用toString()。
号码。调用(null, n) .toString ()
你可以将这个技巧用于其他javascript原生对象。
我使用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%左右。
是这样的:
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倍。
如果需要将结果格式化为特定的小数位数,例如表示货币,则需要类似toFixed()方法的东西。
number.toFixed( [digits] )
数字是小数点后要显示的位数。