3

我在 F12 开发工具下的 Internet Explorer 9.0 上遇到此错误,在以下语句中:

arr = [];
for (i = 0; i < items.length; i ++) {
  console.log(items[i]);
  arr.push(items[i].join(','));
}

此方法适用于除 IE 以外的所有浏览器。为什么它不起作用?

4

3 回答 3

4

这是我的猜测(因为我们缺乏信息)

它可以是以下几种的组合:

  • 您在 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)
于 2012-10-09T13:33:13.420 回答
0

通过将 arr = [] 更改为 var arr = []; 解决了这个问题。

于 2013-12-09T19:37:52.523 回答
0

不是一个完整的答案,但会帮助我......

我以为我正在使用 join 方法作为 Array 类型的静态方法(这可能背叛了我的 C# 历史),如下所示:

var s = Array.join(myArray, ",");

不出所料,我找不到其他人使用这种语法。令人惊讶的是它可以在 Firefox 中运行。没有在 IE 中,这就是导致我来到这里的原因。

更改为更常规的

var s = myArray.join(",");

解决它!

于 2016-02-25T17:26:13.693 回答