kehiの日記: JavaScriptのlengthってこんな仕様だったのか(汗 4
よくぞまーこれまで気がつかずに無事ですんだものだ。。(汗
都道府県名を配列に入れて
for(i=0;i<a.length;i++){}
とかやってHTML表示していたロジックで今まですんなり動いていたものに対し、とある事情で配列の添え字を1からスタートするように変更したときのこと・・・
47しかないはずの都道府県の数が48になっちゃうのでバグかと思い、いろいろなブラウザで試すも結果は一緒。
あれ??って思ってlengthの仕様を調べてみたら、背中に悪寒が(滝汗
http://builder.japan.zdnet.com/sp/javascript-kickstart-2007/story/0,3800083428,20366841-2,00.htm/
firebugコンソールに以下のコードを貼りつけると試せます。
var before=[];
before[0]='北海道';
before[1]='青森県';
before[2]='岩手県';
//・・・
alert('before='+before.length);//3
/**********/
var after=[];
after[1]='北海道';
after[2]='青森県';
after[3]='岩手県';
//・・・
alert('after='+after.length);//4
after[10000]='OTL';
alert('omake='+after.length);//10001
なぬ?!lengthは、「インデックス最大値 + 1」を表すってマジか?
after[1000]='***';
とか追加すると1001って返すのか。。。恐ろしい
よくぞ今まで無事だったな・・
てか今まで書いたコードの中に思わぬ落とし穴があったのかも・・(滝汗