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

761

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

以下是一些示例:

  1. String(n)

  2. n.toString()

  3. ""+n

  4. n+""


这个问题对我来说似乎足够清晰明了。 - qwr
25个回答

0
你可以调用 Number 对象,然后调用 toString() 方法。 Number.call(null, n).toString() 你也可以使用这个技巧来处理其他 JavaScript 原生对象。

0
我们还可以使用String构造函数。根据this benchmark的说法,在Firefox 58中,这是将Number转换为String的最快方法,尽管在流行的浏览器Google Chrome中比" + num慢。

0

如果你想知道哪种方法最有效率,可以看一下这个比较不同的数字转字符串的方法。

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

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


0
最近刚接触到这个问题,方法3和4不适合,因为字符串是如何复制并拼接在一起的。对于小程序来说,这个问题微不足道,但对于任何真正的Web应用程序,在处理频繁的字符串操作时,会影响性能和可读性。 这里是链接以供阅读

0

使用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

每次运行时都是类似的时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接