見出し画像

Velo 第84回 ループ文

当たり前ですが関数宣言を除きコーディングは書いた順に実行されます。
この実行順を意図的に制御する文を制御文と言います。
つまり制御文とは直線的な実行順序を変更するための文です。

VBAの場合、基本的な計算は Excel がやりますので、コーディングはもっぱら Set、Get を使ってセルへ値を受け渡しすることと、それを制御文でコントロールすることです。

Velo も Wix の利便性を上げるために使うものです。
従ってコーディングの基本は、各エレメントへの値の受渡しと、それを制御文でコントロールすることです。よく似ています。
つまり制御文は Veloコーディングの肝と言っても構いません。

制御文には3種類の文が用意されています。
ジャンプ文、条件文、そしてループ文です。
今回は繰り返しを担うループ文についてまとめてみましょう。

Javascript のループ文は、while文、do/while文、for文、for/of文、for/in文のは5種類です。

分類数を記憶するのもコーディング対策に有効な学習方法の一つです。
つまり状況に応じて3択、5択という考え方で対処できるからです。
さて5種類のループ文を見てみましょう。

while文

構文は while (test) {statement} です。
構文は if文と全く同じですので if文のループ版と思えば間違いありません。
test が真の間 statement が反復して実行されます。
従って test が常に真ならば無限ループになります。
また最初が偽なら何も起こりません。
それでは意味がないので何らかの変数を利用して、最初は真、やがては偽となる test を使います。
下図のコードをご覧下さい。

while文

count が1つずつ増え 5 になったら終了する while文です。

do/while文

構文は do {statement ;} while (test) です。
do が先頭に来るので文字通り命令文ですね。

さて while文では、最初の test が偽なら statement は一度も実行されませんが、この構文では少なくとも1度は statement が実行されます。
違いはその1点ですので、あまり使い道はありません。

for文

構文は for (initialize; test; increment){statement} です。ループ文の代表格です。以下の図をご覧下さい。

for文

initialize 部

最初に一度だけ実行されます。未出の変数 count を使うためには変数宣言が必要ですので let count = 0 を使っています。
既出の変数を使う場合は初期値の代入だけで十分です。
代入文ではカンマ演算子を使うことが出来ます。

test 部

この部分が真なら statement を実行します。

increment 部

statement の後に実行されます。
多くの場合は変数の増減を伴う代入式が定義されます。
カウンターを使う場合は、それを一つ増やしたり、減らしたりするのが普通です。代入文ではカンマ演算子を使うことが可能です。
以下の図をご覧下さい。

カンマ演算子を使う

変数への初期値の代入部と増減部でカンマ演算子を使っています。
複雑な for文では大変便利です。

各部の省略

上記3つの式はどれを省略しても構いません。
省略する場合はセミコロン(;)のみを記述します。
例えばカウンターに既出の変数を使う場合は下図の様に書くこともできます。

initialize部を省略

while文との関係

構文 for (initialize; test; increment){statement} は while文で次の様に書き直すこともできます。
initialize; while (test) {statement; increment}

for/of文

構文は for (variable of Object){statement} です。
ただし Object は配列、文字列など反復可能オブジェクトに限定されます。
ん~、と言うか、配列用のループ文と思うとドンピシャです。
変数 variable は未出なら for文と同様に宣言する必要があります。

of キーワードを使って、イテレータから要素を次々と取得し変数 item に代入します。そ
して配列の要素が尽きるまで statement を実行します。以下の図をご覧下さい。

for/of文

for/in文

構文は for (variable in Object){statement} です。
Object は任意のもので構いません。

in キーワードを使ってObject のキーが逐一評価され、変数 variableに代入されます。下図をご覧下さい。

for/in文

キーが次々と取り出されているのが分かります。
配列もオブジェクトの一つですのでfor/in文は配列にも使えます。
が、結果はつまらぬものです。下図をご覧下さい。

配列に対する for/in文

この配列は {'0': 10, '1': 20, '3': 30} のようなオブジェクトになっています。
従ってキーである 0, 1, 2 が 変数 item に代入されます。
つまりどんな配列もこうなり、つまらない結果になります。

Velo開発のご依頼はこちら


いいなと思ったら応援しよう!