我经常看到开发人员在JavaScript中使用如下表达式:
arr = []
arr[arr.length] = "Something"
arr[arr.length] = "Another thing"
Run Code Online (Sandbox Code Playgroud)
会不会push更合适?
arr = []
arr.push("Something")
arr.push("Another thing")
Run Code Online (Sandbox Code Playgroud)
gki*_*ely 53
我实际上在今年年初问自己同样的问题.更新了新的测试用例 http://jsperf.com/array-push-vs-unshift-vs-direct-assignment/2
看起来push铬的速度要快得多,FF也差不多.在IE9中直接也更快,但我很想知道它在IE10中的表现如何.
我想说大多数开发人员会假设设置数组的长度,然后使用直接赋值更快,就像大多数编程语言一样.但JavaScript是不同的.Javascript数组不是真正的数组,它们只是键/值映射,就像所有其他JavaScript对象一样.所以预分配基本上是置若罔闻的.
个人我更喜欢push(:
我相信这主要是习惯。
一些开发人员使用它只是因为这是他们习惯的方式,并且没有考虑到这push是一种替代方案。
一些开发人员曾经了解到一种方法比另一种方法快得多,并且没有根据 Javascript 引擎最近的性能改进来审查这一点。
我个人push经常使用。大多数时候,可读性和可维护性比性能更重要,至少当性能影响足够小时。这里的答案中发布的性能测试表明,各种方法之间的性能差异不是很大。