我有这段代码:
var boo = 123123;
我想将该数字转换为字符串,而 conact string 比原生JavaScript .toString()更快:
更快:
var foo = boo + "";
慢:
var foo = boo.toString();
jsPerf:http://jsperf.com/concat-string-vs-tostring
为什么 .toString()比判断空字符慢?最后我想知道使用+ ""
技术而不是.toString()
的正确方法是什么?
答案 0 :(得分:2)
结果会因使用的javascript引擎而异。在Chrome上,我得到的结果与Afshin相同。
那么为什么一个比另一个慢呢?这是因为在toString
上将再次调用V8中的C函数。你可以尝试下一步看看:
script1
脚本,然后按Enter键。 使用script2
脚本1:var boo = 123123; var foo = boo + "";
脚本2:var boo = 123123; var foo = boo.toString();
在我的情况下,首先会导致下一个stacktrace:
InjectedScript.evaluate
InjectedScript._evaluateAndWrap
而第二个:
InjectedScript.evaluate
InjectedScript._evaluateAndWrap
InjectedScript._evaluateOn
evaluate
我认为它更多地与引擎内部结构有关,而不是官方的js规范,可能可以优化使用相同的代码路径。