JavaScriptの配列を扱うコードを書いていて、間違えて宣言した要素数より多く値を代入してしまった。しかし、何事もなく値が返されることに驚いた。なぜ?といろいろ試してみることにした。
まず、配列の要素数を宣言する。
strNum = new Array(2);//要素数を宣言する strNum[2] = "弐";宣言した要素数は『2』なので、以下の二つしかないはず。
- strNum[0]
- strNum[1]
なので
『strNum[2] = "弐";』
の時点でコンパイル時にエラーとなる。
しかし、JavaScriptなので、そこは百歩譲ってヨシとしよう。
が、このまま『strNum[2]』を使用出来てしまうのはどういうこと?
document.write(strNum[2]);これで『弐』と表示されるのが理解不能。
さらにもっと理解不能なのが要素数を宣言しなくても配列に代入出来てしまうこと。
strNum = new Array();//要素数を宣言しない。 strNum[2] = "弐";こんなことも可能でしかも、
document.write(strNum[2]);これで『弐』とちゃんと表示されるのがまたまた理解不能。
結論:
JavaScriptは配列数を宣言してもしなくても何も変わらない
こんなユルユルな仕様でイイのか?
0 Comments:
コメントを投稿