在JavaScript数组中放置项目的任意索引位置

4

可能是重复的问题:
JavaScript数组是否稀疏?

在JavaScript中,以下操作“安全”吗?(也就是说,在所有JavaScript引擎上都可以可靠地工作)

a = [];
a[100] = "hello";

a[100] == "hello"; // should be true

https://dev59.com/M3I_5IYBdhLWcg3wJPdu - Brad
是的,它可以在任何地方工作。但是如果您实际上不需要数组特定的功能,比如.length,请改用对象:var a = {}; - Ry-
3个回答

6

是的。JavaScript中的数组是稀疏的,您的代码应该在所有JavaScript实现中正常工作。

您可以在规范(PDF)的第15.4节中了解要求。

简要概述:数组是一种特殊的对象,当向具有数字名称(例如`a[123] =“test”)的属性添加元素时,其长度属性会调整。其他方法如join在操作期间考虑长度。


0

是的,为什么不行呢?这是完全可接受的语法。


从语法上讲是可以的,但我只是想知道在JavaScript中在任意索引处初始化项目是否是定义良好的行为。 - user193476
1
@rfw,它在语言上是定义良好的,但实现方式可能会有所不同。请参见https://dev59.com/M3I_5IYBdhLWcg3wJPdu#1510842。 - Brad
有很多语句是“可接受的语法”,但实际上并不能正常工作。 - Ted Hopp

0

你甚至可以假设

a[100] === "hello"; // will return true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接