3

次のステートメントで、F12開発ツールのInternetExplorer9.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モードになっています

  • アレイを構築したときに、末尾を含めました,

クァークズモードまたはIE8以前では、配列のリテラル構文に末尾のコンマを含めると、(誤って)配列の最後に余分な項目が追加されます。

これは、最後のアイテムがになり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=[]をvararr=[]に変更することで解決されました。

于 2013-12-09T19:37:52.523 に答える
0

完全な答えではありませんが、私を助けてくれたでしょう...

次のように、joinメソッドを配列型の静的メソッド(おそらくC#の履歴を裏切る)として使用していると思いました。

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

そして当然のことながら、私はその構文を使用している他の人を見つけることができません。驚くべきことは、Firefoxで動作したことです。IEにはいませんでした。それが私をここに導いた理由です。

より従来型への変更

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

修正しました!

于 2016-02-25T17:26:13.693 に答える