var array = [,, "cat", "dog"];
这将创建一个包含两个空值的数组(以便稍后我可以使用它们)。如果不做慢而乏味的话,我想不出任何其他方法可以做到这一点array[2] = "cat"; array[3] = ...
这是一个很好的方法来做到这一点。或者是否有另一种推荐的做法来模仿这种能力。
答案 0 :(得分:4)
是。 hole 将不会被定义,但会影响数组长度。
可以在元素列表的开头,中间或末尾省略数组元素。每当一个逗号在 元素列表之前没有AssignmentExpression(即开头或之后的逗号 逗号),缺少的数组元素有助于数组的长度并增加索引 后续要素。未定义Elided数组元素。
然而,正如pimvdb所指出的那样,它可能并不一定意味着这是一个好习惯。
答案 1 :(得分:3)
第一次的代码看起来像是一个错误。
如果你真的想要undefined
值,那么明确表达它是有益的。
var array = [undefined,undefined, "cat", "dog"];
不是更好,但您也可以执行以下操作。
var array = ["cat", "dog"];
array.unshift(undefined,undefined);
它绝对有效但不一定干燥清晰。
答案 2 :(得分:1)
是的,没关系。基本上你正在做的是声明一个包含四个元素的数组,但不必为前两个输入undefined
。但是,如果不希望长度等于4,则必须采用另一种方式。
您的数组似乎是一个元素列表,其中索引到值的映射很重要。如果是这种情况,您可以考虑使用一个对象,它(我认为)会更整洁:
var obj = { 2: "foo", 3: "bar"};
alert(obj[2]);
// later
obj[4] = "baz";
alert(obj[4]);