哪个更好,a = []或a = new Array()?

时间:2011-01-07 23:36:16

标签: flash actionscript-3 performance optimization syntax

在Actionscript 3中,哪个更好?

a = [1,2,3];

a = new Array(1,2,3);

看来,使用数据作为单独的参数调用Array构造函数会更慢,而另一种方法将是某种直接内存复制。

你知道在大多数情况下哪个更好用,为什么?

3 个答案:

答案 0 :(得分:9)

我更喜欢方括号,因为它更简洁易读。

后一种语法实际上会慢一点,因为您可以通过执行Array = function() { ... };来替换默认数组构造函数 - 至少在大多数ECMAScript变体中都可以。因此,使用该表单将需要首先查找全局Array函数。

答案 1 :(得分:7)

对于几乎所有情况,我更喜欢方括号,以避免混淆。

数组构造函数有两种形式:

  • Array(...)
  • Array(size:int)

第一个表单使用列出的参数作为值创建和数组,第二个表单创建一个包含该数量元素的数组。在您想要使用单个int初始化数组之前,这一切都很好:

  • new Array() => []
  • new Array("foo") => ["foo"]
  • new Array("foo", "bar") => ["foo", "bar"]
  • new Array(42,43) => [42,43]
  • new Array(42) => [undefined, ...undefined x 40..., undefined]

在我刚停止使用Array构造函数之前,这种不一致让我咬了几次,除了极少数情况下我需要一个带有N个未定义元素的数组。

答案 2 :(得分:6)

使用Array Literal(var a:Array = [])总是比说新的Array()更快,我认为这是最佳实践。