JavaScript开发人员是否有理由不使用Array.push()?

我经常看到开发人员在JavaScript中使用类似以下的表达式:

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

不会push得更合适吗?

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

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

看起来铬的push速度要快得多,FF的push速度也相当快。 在IE9中,直接速度也更快,但我有兴趣了解它在IE10中的表现。

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

我个人更喜欢push ((:


我相信这主要是习惯。

一些开发人员仅仅因为它们习惯于这样做而使用它,而没有考虑push是另一种选择。

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

我个人经常使用push 。 大多数情况下,可读性和可维护性比性能更重要,至少在性能影响足够小时。 这里回答的性能测试显示,各种方法之间的性能差异并不是很大。


这是一种限制嵌套braclets的方法。 如果你有足够的人,你不能看到你有多少或多少你需要(当以后看代码)。 我会使用一个var,一个人只需要计算一次。

bar = foo.length;
foo[ bar++ ] = "new item 0";
foo[ bar++ ] = "new item 1";
foo[ bar++ ] = "new item 2";
foo[ bar++ ] = "new item 3";

http://jsfiddle.net/vEUU3/

链接地址: http://www.djcxy.com/p/5155.html

上一篇: Is there a reason JavaScript developers don't use Array.push()?

下一篇: Are JavaScript strings immutable? Do I need a "string builder" in JavaScript?