我们arr = [1,2,3,4].如果我arr[x]在哪里x >= arr.length,arr.length成为x + 1.
这种情况发生在Firefox和Chrome上.我有两个问题:
谢谢!
这是定义的行为吗?
是的,参见规范§15.4.
这是推荐吗?
这完全取决于你想要的最终结果.这样做没有错.
您会非常常见地看到这样构建的数组:
var a = [];
for (/*...some loop over things...*/) {
a[a.length] = /* ...something to put on the array... */;
}
Run Code Online (Sandbox Code Playgroud)
......这完全相同:
var a = [];
for (/*...some loop over things...*/) {
a.push(/* ...something to put on the array... */);
}
Run Code Online (Sandbox Code Playgroud)
一些JavaScript引擎的处理a[a.length] = ...速度比a.push(...)(其他的相反)快.
请注意,JavaScript数组很稀疏,它们可能存在间隙,这是此行为的部分原因.(实际上,JavaScript数组根本不是数组.)您可以为length属性分配赋值.
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |