0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

40 代おっさん GASのスコープを学ぶ

Posted at

本記事ついて

本記事は プログラミング初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。

スコープ

変数や定数には、どこからそれらからを参照できるかという範囲が定められている。
そのことをスコープと呼ぶ

グローバル領域

console.log('利樹君です!');

function toshiki() {
  console.log('利樹はかわいいです');
}

console.log('利樹はとてもかわしいです。');

これを実行したとします。
ログ情報は
16:49:30 情報 利樹君です!
16:49:30 情報 利樹はとてもかわしいです。
16:49:30 情報 利樹はかわいいです
この順番になったと思います。

つまりfunction toshiki()が一番最後に実行されたのです。
function toshiki()の外はグローバル領域と言われ、関数より先にステートメントが先に実行されるのです。

次に

function toshiki() {
  console.log(`${calcArea_(3, 4)}`);
  const calcArea_ = (x, y) => x * y;
}

これを実行すると
ReferenceError: Cannot access 'calcArea_' before initialization
とエラーコードが出ます。
これはcalcArea_ が関数呼び出しが先に行われたことにより発生しました。

function toshiki() {
 const calcArea_ = (x, y) => x * y;
  console.log(`${calcArea_(3, 4)}`);
}

こちらだと普通に動くと思います。

グローバル領域を多用すると順序が分かりずらくなるので、特定のファイルにまとめて行うなどの工夫をするといいみたいです。

スコープの種類

グローバルスコープ プロジェクト全体から参照できる
ローカルスコープ  特定の範囲のみから参照できる
関数スコープ  宣言された関数の内部からのみ参照できる
ブロックスコープ  宣言されたブロックの内部からのみ参照できる

ブロック

ステートメントをグループ化したもの

構文

{
  //処理
}

参考資料

https://www.amazon.co.jp/s?k=google+apps+script+%E5%AE%8C%E5%85%A8%E5%85%A5%E9%96%80&adgrpid=110264232688&gclid=CjwKCAiA9aKQBhBREiwAyGP5lSl7AJJLCvOEHb4wQgMlyqW1fll5X8GDTT_Rkd1_soUAyIPMXQr26hoClHEQAvD_BwE&hvadid=553833563682&hvdev=c&hvlocphy=1009076&hvnetw=g&hvqmt=b&hvrand=4378489642044417389&hvtargid=kwd-594191211348&hydadcr=4106_13159878&jp-ad-ap=0&tag=googhydr-22&ref=pd_sl_2x1owglv0s_b_p52

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?