注意:编辑示例以反映我的实际问题,这是数组初始化中的尾随逗号.
似乎原始数组初始化和array.push的混合可能导致索引变得非常糟糕.
我这样做:
var iFeelLikeIt = true;
var items = ["thing1", "thing2",];
if (iFeelLikeIt) {
items.push("thing3");
}
items.push("thing4");
Run Code Online (Sandbox Code Playgroud)
在IE7中,(尚未检查6或8),我的数组看起来像:
实际上,它看起来更像是一个按数字键入的字典,其键为0,1,3,4.
我已经将我的代码更改为只是初始化一个空数组并根据需要将所有内容推送到它上面,并且它表现得非常清晰.但是想知道是否有人知道这种行为的正当理由?或者至少闻起来像是一个有效理由的蹩脚借口的东西.
nem*_*isj 15
首先,如果我运行你的例子,它会显示一个错误,即thing1未定义.我想你想把它变成字符串?然后,如果我尝试这样做,iFeelLikeIt也会抛出错误,导致它未定义.
我假设您在代码中写道:
var items = ["thing1", "thing2",];
Run Code Online (Sandbox Code Playgroud)
检查数组末尾的最后一个逗号.IE将其解释为新的未定义值,它将创建具有下一个值的数组:
thing1,thing2和undefined值.
没有比这更好的了.