将数字转换为字符串的“最佳”方法是什么(从速度优势、清晰度优势、内存优势等方面考虑)?
一些例子:
字符串(n) n.toString() “”+n n+“”
将数字转换为字符串的“最佳”方法是什么(从速度优势、清晰度优势、内存优势等方面考虑)?
一些例子:
字符串(n) n.toString() “”+n n+“”
当前回答
显式转换对于语言新手来说非常清楚。正如其他人所建议的那样,如果开发人员不知道强制规则,使用类型强制将导致歧义。最终,开发人员的时间比CPU的时间更昂贵,所以我将以后者为代价来优化前者。话虽如此,在这种情况下,差异可能可以忽略不计,但如果不是这样,我相信有一些不错的JavaScript压缩器可以优化这类事情。
因此,出于上述原因,我选择:n. tostring()或String(n)。String(n)可能是一个更好的选择,因为如果n为空或未定义,它不会失败。
其他回答
我使用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%左右。
只需使用模板文字语法:
`${this.num}`
当使用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
每次运行的时间都差不多。
. tostring()是内置类型转换函数,我不是这方面的专家,但每当我们比较内置类型转换和显式方法时,内置的解决方案总是首选。
你可以调用Number对象,然后调用toString()。
号码。调用(null, n) .toString ()
你可以将这个技巧用于其他javascript原生对象。