我在 F12 开发工具下的 Internet Explorer 9.0 上遇到此错误,在以下语句中:
arr = [];
for (i = 0; i < items.length; i ++) {
console.log(items[i]);
arr.push(items[i].join(','));
}
此方法适用于除 IE 以外的所有浏览器。为什么它不起作用?
我在 F12 开发工具下的 Internet Explorer 9.0 上遇到此错误,在以下语句中:
arr = [];
for (i = 0; i < items.length; i ++) {
console.log(items[i]);
arr.push(items[i].join(','));
}
此方法适用于除 IE 以外的所有浏览器。为什么它不起作用?
这是我的猜测(因为我们缺乏信息)。
它可以是以下几种的组合:
您在 IE8 中进行测试,或者如果您使用的是 IE9,则您处于 Quirks 模式
构建数组时,包含了一个尾随,
在 Quirks 模式或 IE8 及更低版本中,如果您在 Array 文字语法中包含尾随逗号,它将(错误地)在 Array 末尾添加一个额外的项目。
这意味着您的最后一项将是undefined
,并且您在使用时会收到错误消息.join()
。
在 IE8 及更低版本或 Quirks 模式下的任何版本中,您将获得以下内容:
var items = [
["foo"],
["bar"],
["baz"], // <-- trailing comma
];
alert(items.length); // 4 (should be 3)
通过将 arr = [] 更改为 var arr = []; 解决了这个问题。
不是一个完整的答案,但会帮助我......
我以为我正在使用 join 方法作为 Array 类型的静态方法(这可能背叛了我的 C# 历史),如下所示:
var s = Array.join(myArray, ",");
不出所料,我找不到其他人使用这种语法。令人惊讶的是它可以在 Firefox 中运行。没有在 IE 中,这就是导致我来到这里的原因。
更改为更常规的
var s = myArray.join(",");
解决它!