非天マザー by B-CHAN

iPhoneの使い方、IT、ビジネス、金融、経済、不動産、保険、音楽、映画、ニュース、自己啓発その他。

JavaScriptでwhile(配列[i])と言う書き方

通常のループ

 

 

今回も、JavaScript学習で引っかかった点を備忘録として書きます。

初心者の人は参考にしてみてください。

 

ループのための方法としては主に、

 

  • for
  • while

 

のいずれかが思いつくと思います。文法を覚えていない人は復習してください。

 

まず、forの場合は、例としては、

 

var i;

for ( i =0; i < 10; i ++ ) {

処理

};

 

ですね。

同じような処理を、whileで書くなら、

 

var i = 0;

while ( i < 10 ) {

処理

i ++;

)

 

てな感じです。

 

whileの()内の値が真(true)である場合に処理が行われますね。

 

 

配列のループ

 

 

では、次のような配列があるとします。

 

name = ["Tokyo", "Yokohama", "Nagoya", "Osaka", "Fukuoka"];

 

この配列の値の個数分だけループしたい場合、while文を使うなら、

 

var i = 0;

while ( i < name.length ) {

処理

i ++;

}

 

と言う風に、lengtjhプロパティで個数を知れば良いんですね。

ところが、調べていくうちに、次の書き方もできることがわかりました。

 

var i = 0;

while ( name[i] ) {

処理

i ++;

}

 

なぜ、これでも成り立つんでしょうか。

自分なりに考えました。

()内が真(true)であれば成立する。

つまり、name[i]がtrueであれば、成立するってことです。

 

では、trueとは何か。それは偽(false)では無いモノ。

falseになるのは、

 

  • 0……ゼロ
  • -0……マイナスゼロ
  • ""……空文字
  • undefined……未定義
  • null……何も無し
  • NaN……Not a Number
  • false……そのまま

 

だと言うことです。

つまり、普通に文字や数字であれば、それはtrue。

上記の配列nameは、name[0]、name[1]、name[2]、name[3]、name[4]、までは中身がありますが、name[5]は未定義です。

だからwhileが処理されないんですね。

確かに!

 

てなわけで、引き続き、全国のJavaScript学習者のみなさん、がんばりましょう。