gpt4 book ai didi

javascript - 为什么连接空字符比 .toString() 更快?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:56 24 4
gpt4 key购买 nike

我有这个代码:

var boo = 123123;

我想将该数字转换为字符串,conact string 比原生 JavaScript .toString() 更快:

更快:

var foo = boo + ""; 

较慢:

var foo = boo.toString(); 

jsPerf:http://jsperf.com/concat-string-vs-tostring

为什么 .toString() 比连接空字符慢?最后我想知道的是,使用 + "" 技术而不是 .toString() 的正确方法是什么?

最佳答案

结果会因使用的 javascript 引擎而异。在 chrome one 上,我得到了与 Afshin 相同的结果。

那么为什么实际上一个比另一个慢?这是因为在 toString 上,V8 内部将再调用一次 C 函数。你可以自己试试看:

  • 在 chrome 中打开空标签页(以避免已打开页面的任何副作用)
  • 打开开发者工具
  • 打开个人资料标签并开始新的个人资料
  • 转到“控制台”选项卡并插入 script1 脚本,然后按 enter。
  • 再次转到配置文件并停止配置
  • script2

    重复同样的操作>
  • 脚本 1:var boo = 123123; var foo = boo + "";

  • 脚本 2:var boo = 123123; var foo = boo.toString();

在我的例子中,首先会产生下一个堆栈跟踪:

  InjectedScript.evaluate
InjectedScript._evaluateAndWrap

第二个:

  InjectedScript.evaluate
InjectedScript._evaluateAndWrap
InjectedScript._evaluateOn
evaluate

我认为与官方​​ js 规范相比,它更多地与引擎内部有关,并且可能可以优化以使用相同的代码路径。

关于javascript - 为什么连接空字符比 .toString() 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14918778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com