強火で進め

このブログではプログラム関連の記事を中心に書いてます。

配列リテラルとカンマの組み合わせについての奇妙な挙動

配列リテラルとカンマの組み合わせについての「なんでこんな動作するんだーっ」という話。読んでみると確かになんだか不思議に感じる挙動でした。

Javascriptが難しくてわからないので誰か教えてください — Aduca
http://www.aduca.org/article/wtfjs/

回答付いてるからなぁ?とコメント欄を見てみた所、こちらのサイトにて回答を書いたとの事が書かれていたので早速見てました。

微妙な配列リテラル: Seaoak's READ
http://seaoak.cocolog-nifty.com/read/2011/05/post-df49.html

この解説を観ると一見、不思議なこの挙動も直ぐに納得出来ました。

因みに今回の例を実際にFireBug上で実行するこの様な結果になり、より理解し易いです。

[] を文字列にすると要素が無いので ""、 [,] は [undefined] と評価されるので ""、 [,,] は [undefined, undefined] と評価されるので ","。

後、 [,] は [undefined, undefined] になるじゃない?と一瞬思ってしますがJavaScriptはこんな感じの場合、

var a = [1, 2, 3,];

a には [1, 2, 3] が格納されます。最後の , が余分に付いていても無視されます。

これを考慮すると [,] は [undefined] 、 [,,] は [undefined, undefined] と評価されるのも納得ですね。