将数字转换为字符串的“最佳”方法是什么(在速度优势、清晰度优势、内存优势等方面)?
一些例子:
String(n)
n.toString()
""+n
n+""
将数字转换为字符串的“最佳”方法是什么(在速度优势、清晰度优势、内存优势等方面)?
一些例子:
String(n)
n.toString()
""+n
n+""
像这样:
var foo = 45;
var bar = '' + foo;
实际上,即使我通常为了简单方便而这样做,但对于原始速度而言,超过 1,000 次的迭代似乎是有优势的.toString()
在这里查看性能测试(不是我做的,而是我自己写的时候发现的):http : //jsben.ch/#/ghQYR
最快基于上面的 JSPerf 测试: str = num.toString();
应该注意的是,当您考虑到它可以在 0.1 秒内以任何方式进行100 万次转换时,速度上的差异并不过分显着。
更新:速度似乎因浏览器而异。num + ''
基于这个测试,在 Chrome 中似乎是最快的http://jsben.ch/#/ghQYR
更新 2:再次基于我上面的测试,应该注意到 Firefox 20.0.1 的执行.toString()
速度比'' + num
示例慢大约 100 倍。
在我看来n.toString()
,它因其清晰性而获奖,我认为它不会带来任何额外的开销。
对于语言的新手来说,显式转换非常清楚。正如其他人所建议的那样,如果开发人员不了解强制规则,则使用类型强制会导致歧义。最终,开发人员时间比 CPU 时间更昂贵,所以我会以后者为代价来优化前者。话虽如此,在这种情况下,差异可能可以忽略不计,但如果不是,我确信有一些不错的 JavaScript 压缩器可以优化这类事情。
因此,出于上述原因,我会选择:n.toString()
或String(n)
。 String(n)
可能是更好的选择,因为如果n
为 null 或未定义它不会失败。
...JavaScript 的解析器尝试将数字上的点符号解析为浮点文字。
2..toString(); // the second point is correctly recognized
2 .toString(); // note the space left to the dot
(2).toString(); // 2 is evaluated first