JavaScript 开发人员不使用 Array.push() 有什么原因吗?

新手上路,请多包涵

我经常看到开发人员在 JavaScript 中使用如下表达式:

 arr = []
arr[arr.length] = "Something"
arr[arr.length] = "Another thing"

不会 push 更合适吗?

 arr = []
arr.push("Something")
arr.push("Another thing")

原文由 bloudermilk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 304
2 个回答

事实上,我在今年年初问过自己同样的问题。 更新了新的测试用例 http://jsperf.com/array-push-vs-unshift-vs-direct-assignment/2

看来 push 在 chrome 中要快得多,而在 FF 中则差不多。直接在 IE9 中速度更快,但我很想知道它在 IE10 中的表现如何。

我会说大多数开发人员会假设设置数组的长度,然后使用直接赋值会更快,就像大多数编程语言的情况一样。但 JavaScript 不同。 Javascript 数组并不是真正的数组,它们只是键/值映射,就像所有其他 JavaScript 对象一样。因此,预先分配基本上被置若罔闻。

我个人更喜欢 push (:

原文由 gkiely 发布,翻译遵循 CC BY-SA 3.0 许可协议

我相信这主要是习惯。

一些开发人员使用它只是因为这是他们习惯的方式,并且没有考虑过 push 是替代方案。

一些开发人员曾经了解到一种方法比另一种方法快得多,并且没有根据 Javascript 引擎最近的性能改进来审查这一点。

我个人经常使用 push 。大多数时候可读性和可维护性比性能更重要,至少当性能影响足够小时。此处答案中发布的性能测试表明,各种方法之间的性能差异不是很大。

原文由 Guffa 发布,翻译遵循 CC BY-SA 3.0 许可协议

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