JavaScriptの配列をも〜っと深く理解する:lengthの不思議な動作
白石俊平(あゆた)
2008-02-08 11:00:00
不思議な挙動をするlengthプロパティを極めて、JavaScriptの配列を卒業するとしよう。
前回のまとめと今回のあらすじ
JavaScriptをより深く知りたい人のための当連載、今回が八回目です。
これまで2回にわたって、JavaScriptの配列についてお話ししてきました。今回は、JavaScriptの配列に関する最後の記事として、普段皆さんが使用している「配列.length」は、実はとても奇妙なプロパティであると言うことをお話ししたいと思います。
lengthプロパティの不思議な動作
前回の記事で、JavaScriptの配列は、単にJavaScriptオブジェクトが持つハッシュテーブル的な機能を利用しているだけだ、と言うことを説明しました。
では、配列とJavaScriptオブジェクトは全く同じなのでしょうか?
結論から言うと、そうではありません。違う点と言えば、配列専用のメソッドをたくさん持っているという点がまず挙げられます。しかしそれは本質的な答えではありません。配列を配列たらしめている要因は、皆さんも間違いなく使ったことがあるであろうlengthプロパティなのです。
lengthプロパティが示す値とは?
lengthプロパティは非常に特殊な動作をします。その1つが「自動的に変化する」という点です。以下のコードを見てください。
var a = [5, 10]; alert(a.length); // → 2が表示される a.push(15); alert(a.length); // → 3が表示される
何も不思議なことはありませんね。lengthプロパティは配列の要素数を表すのですから。
しかし、現在、要素数が3である配列aに対して以下のような処理を行ったらどうなるか、お分かりでしょうか?
a[1000] = 500; alert(a.length); // 何が表示される?
- ホワイトペーパー



