在JavaScript中将数字转换为string的最佳方法是什么?
将数字转换为string(就速度优势,清晰度优势,内存优势等而言)是什么“最佳”方式?
一些例子:
-
String(n)
-
n.toString()
-
""+n
-
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+""
是最快的。