javascript中forEach方法的底层是如何实现的?

相较于for循环谁的性能更好呢?

阅读 3.2k
2 个回答

当然 for 的性能要优于 forEach

因为 for 不会产生任何上下文开销,而 forEach 从函数签名 forEach(function(cur, i, arr), thisValue) 就能看出来,里面有个 function,每次循环执行时要维护块级作用域、要维护函数上下文,单纯从堆栈上看就比 for 要慢。

P.S. ES 只规定“表现”,并没有规定底层如何实现,各家浏览器内核想咋实现咋实现。感兴趣的话可以自行阅读 V8 相关 C/C++ 源码。

https://www.zhihu.com/questio...

如果你是一个库开发者,你应该多研究研究 V8 的运行机制,比如 JIT,GC 等。如果你是一个普通开发者,还是那句老话,“过早优化是万恶之源”。你应该把可读性、可维护性、可测试性放到首位。

只看性能的话,这两在现代浏览器中没什么区别。Stack Overflow 上一个相关的问题的一系列回答表明,大多数时候是 for loop 最快,偶尔也有例外。你可以跑一下 @nullqube 的回答中的这个测试 https://jsben.ch/mW36e ,自己试试。

这点性能一般不用关心吧,“过早优化是万恶之源”。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题