ジーニアスブログ – WEB制作会社ジーニアスウェブのお役立ちブログ

処理を終了?スキップ?GoogleAppsScriptの【break】【continue】【return】の違いについて。

みなさん、こんにちは。
ジーニアスウェブの高橋です。

いよいよ夏本番がやってきました。
とても暑い日が続き大変ですが、大好きなモンスターエナジーに元気をもらい毎日頑張っています。

さて、今回は社内システムを実装した際につまずいた、【break】【continue】【return】の違いについてまとめていきたいと思います。

【break】【continue】【return】の3つは処理は似ているようで、使い方がそれぞれ違い,
使い方を間違えるとエラーになったり、思っていなかった動きをしてしまうので注意が必要です。
今回はfor文を使った1~10までの数字をログ表示する関数を例にそれぞれの動きを見ていきたいと思います。

まずは普通のfor文

ループ処理について、特に何も指定していないので、そのまま1~10までの数字がログ表示されています。

break

使用できる場所はwhile文やfor文のループ処理の中、そしてswitch文です。
breakを使用すると、ループ処理やswitch文を終了し、次の実行文に移動します。

i=8の場合にbreakを実行するif文を追加しました。
i=8の場合、ループ処理を停止するのでログ表示される数字は1~7までです。
ちなみに関数は上から下に順番に読まれていくので、Logger.log(i)の後にif文を挿入すると、同じ条件を与えていてもログ表示される数字は1~8までに変わってきます。

continue

使用できる場所はwhile文やfor文のループ処理の中です。
continueを使用するとその時点でループ処理をスキップし、次の繰り返しに進みます。

i=8の場合にcontinueを実行するif文を追加しました。
i=8の場合、ループ処理をスキップするのでログ表示されるのは8以外の数字です。
またif文をLogger.log(i)の後にif文を挿入した場合、ログ表示がされた後にif文が実行されてしまうため、ログ表示される数字は1~10の数字になり、8はスキップされないので、注意です。

return

使用できる場所は関数の中です。
returnを使用すると、関数の処理を終了し、returnの後に書かれた値(戻り値)を返します。

=8の場合にreturnを実行するif文を追加しました。
i=8の場合、ループ処理を終了するのでログ表示されるのは1~7までの数字です。
こちらもLogger.log(i)の後にif文を挿入すると、同じ条件を与えていてもログ表示される数字は1~8になります。

またreturnでi(この場合は数字の8)を渡しているので、

このような関数を使用した場合は、returnで渡したiを使って、i×i、この条件の場合は8×8の計算結果をログ表示することになります。

まとめ

【break】【continue】【return】の違いについていかがでしたでしょうか。
少しややこしいかもしれないですが、

【break】→ループ処理(while,forなど)、switch文の終了!
【continue】→ループ処理(while,forなど)のスキップ!
【return】→関数の処理の終了(終了かつ戻り値を返す)!

とざっくりとでも思えておけば、今後スクリプトのコーディング作業が少しでも楽になると思います。
それでは。