デジハリ 新しい自分に生まれ変わろう
デジハリ 新しい自分に生まれ変わろう
2010.09.23

javascriptの配列の解釈の違い

まっちー

(突然ですけど)例えばですが、こんな↓配列があったとします。

var myArray = [1,2,3,4,5,];

まあ、何てことない普通の配列なのですが、注目してほしいのは、5の後ろにあるコンマ。

ここにコンマがあると、ブラウザによって配列の要素数が変わって来るようなのです。

実際にこの要素数をアラートしてみれば分かるのですが

var myArray = [1,2,3,4,5,];

alert(myArray.length);

上記の場合、FirefoxやOperaだと結果は5が返ってきます。

しかし、IEだと6が返って来るようです。

コンマの後に何もなくても、要素数をカウントしてしまうみたいですね、IEだと。

仕事ではないんですが、ちょっとjQueryのライブラリを使ってお遊びでサイトを作ったりなんかしていまして……で、どうしてもIEでだけjavascriptが思うように動作してくれなくてですね……何でかなぁと3か月くらいずっと悩んでいたんです。

IEだから仕方ないかなとか、IEが悪いに違いない、IEなんて死ねば良いんだとか、ひたすらIEに責任をなすりつけてこれは正常な動きはできないものなんだ、俺のせいじゃないとずっと目を逸らして来たんですが、現実と向き合ってみたら、問題はこのコンマにあったみたいです。

PHPと組み合わせて、foreachで回して配列に値を入れていたせいで、最後のコンマが余分だったことにうっかり気づかなかったのが敗因でしたね。

var myArray = [



        {name : ""},



];

何かこんな感じの配列を作ってたわけっすよ。当然最後に不要なコンマが入ってしまいますね、これだと。

そこを修正したら、IEでも他のブラウザと同じような動作をしてくれるようになりました。やったね★

まあ、IEが悪いと言えば悪いような、俺が悪いと言えば悪いような……? そんな感じ?