現在、Javascriptのループ文を学んでいるのですが、
以下の2点について、分からない部分があるため、どなたかご教示頂けますでしょうか。
- do Whileについて
JavaScript
1function printArray(a) { 2var len = a.length, i=0; 3if (len ==0) 4 console.log ("Empty Array"); 5 else { 6 do { 7 console.log(a[i]); 8 } while (++i< len); //この条件式がわからない 9 } 10}
通常のfor文等であれば、条件式は (var i=0; i< len ; i++){処理}で記載され
initialize/test/incrementの過程が直感的に理解できます。
つまり、testを評価しtrueとなる限り、処理が実行されるということになろうかと思います。
一方で、学んでいる書籍について、上記のwhileの条件式は(++i< len)となっており、test自体がincrementしており、直感的に理解できません。
これはtestの中にincrementを含めることも認められる記法であるということなのでしょうか?
また、(i=0 ;4 < i < 9 ; i+=2)のような複雑な条件を組むことは可能なのでしょうか?
- for文について
同じ書籍の例示に以下のような変わった例示があります。
JavaScript
1function tail (o) { 2for (; o.next; o=o.next) /*空文*/ //何がしたい?incrementもなくどうやってループしているの? 3return o;
解説によれば、以下の2点に触れられています。
・ループ変数は数値であるとは限らない
・リンクリストoの末尾(nextプロパティを持たない最初のオブジェクト)を返す
上記oは具体的にどういうオブジェクトを想定しているのでしょうか?
下記のようなものと思ったのですがundefinedが返されるため、ご教示願えますでしょうか?
var obj = {
a: {next:"hit"},b:{next:"hit"}, c:{here:"not hit"};
}
また、オブジェクトの構造を巡回して検査をする構造であるとすれば、数値の場合にi++でループさせているのに対して、incrementもなくどのようにしてループさせているのか構造が理解できないのですが、併せてご教示頂けると幸いです。
長文となりまた至らぬ点も多く、申し訳ございませんが、
宜しくお願い申し上げます。
回答4件
あなたの回答
tips
プレビュー