どうもGASを学習中のタケイ(@pcefancom)です。
金曜日にノンプロ研GAS中級講座 1回目受講しました。
学んだ内容のまとめと感想です。
変数のスコープと関数はV8版になって進化
中級講座の1回目。変数の種類、スコープと関数について学びました。
GAS(V8版)における「変数の種類」
GASがV8版にアップデートされて変数の概念が変わりました。
JavaScriptの考え方になった感じ。
まず変数の種類は2つになった。
[st-mybox title=”GASの変数” fontawesome=”fa-file-text-o” color=”#757575″ bordercolor=”” bgcolor=”#fafafa” borderwidth=”0″ borderradius=”5″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]
- ローカル領域:いずれかの関数内の領域
- グローバル領域:いずれかの関数に含まれない領域
[/st-mybox]
違いは、影響を及ぼす範囲の違い。
グローバルで宣言すると違うスクリプトファイルでも参照出来てしまいます。
[st-mybox title=”” fontawesome=”” color=”#757575″ bordercolor=”#f3f3f3″ bgcolor=”#f3f3f3″ borderwidth=”0″ borderradius=”5″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]
var msg = ‘Hello!’;
function myFunction1_01() {
console.log(`ローカルで${msg}`);
}
console.log(`グローバルで${msg}`);
[/st-mybox]
とHelloをグローバル変数で宣言すると、別のスクリプトファイルでmsgをconsole.logしてもHelloがでる。
関数内で宣言するローカル変数なら影響するのはその関数のみ。
実用上、グローバルは使わないかなと。特に個人でやる分には。
そう感じました。
変数のスコープ
変数のスコープは以下の3つ。
GASで宣言する時、これまでは「var msg」がお決まりでした。
V8版になってからは違っていて、変数のスコープは3つに分かれました。
[st-mybox title=”メモ” fontawesome=”fa-file-text-o” color=”#757575″ bordercolor=”” bgcolor=”#fafafa” borderwidth=”0″ borderradius=”5″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]
- ブロックスコープ:現在の{}に囲まれたブロック内のみで使用
- ローカルスコープ:宣言した関数内のみで使用
- グローバルスコープ:プロジェクト全体から使用
[/st-mybox]
コードのイメージでは以下のような感じ。
実際は「const →let」の順で使っていくという感じかな。
使うほとんどの変数は、ローカルかブロックスコープになるのかなとと思っています。
グローバルスコープで使うときがまだイメージできていません。
関数「アロー関数」と「引数の種類」「値渡しと参照渡し」の理解がポイント
関数は理解するポイントがてんこ盛りでお腹いっぱいでした(笑)
アロー関数については写経して体感して覚えるほかありません。
引数は繰り返し使って頭に染み込ませます。
[st-mybox title=”GASの関数 引数の種類” fontawesome=”fa-file-text-o” color=”#757575″ bordercolor=”” bgcolor=”#fafafa” borderwidth=”0″ borderradius=”5″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]
仮引数:よくある?引数。数が多い時は捨てられる。少ない場合はundefinedになる
デフォルト引数:引数が足りない場合の既定値を決められる
[/st-mybox]
デフォルト引数を設定したい場合は、仮引数のところで=で定義すればOK
※(x = ‘hoge’, y = ‘fuga’)
[st-mybox title=”” fontawesome=”” color=”#757575″ bordercolor=”#f3f3f3″ bgcolor=”#f3f3f3″ borderwidth=”0″ borderradius=”5″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]
function myFunction() {
const defaulthikisuu = (x = ‘hoge’, y = ‘fuga’) => {
console.log(`x: ${x}, y: ${y}`);
};
[/st-mybox]
値渡しと参照渡しのイメージは講義中は「?」でしたがw、資料の読み返し+ノンプロ研のetauさんのツイートで理解できました!
わかりやすいですね。
ありがとうございます!
参照渡しは、これが一番わかり易いと思うの。 #ノンプロ研
const today = new Date();
const tomorrow = today.setDate(today.getDate() + 1);console.log(today);
— etau (@etau0422) May 22, 2020
;
双方向やりとりが活発な「ノンプロ研」の講義は素敵
以上、ノンプロ研のGAS中級講座で学んだ内容のまとめでした。
初級講座が終わってからちょっとサボっていたので、1回目からやたらハード、お腹いっぱいでした(笑)
それでもどうにかついていけたのは、講座が「双方向なスタイル」を重視してくれているおかげですね。
疑問点は容赦なくTwitter、Slackでやり取りできるので取りこぼしがないです。
講義って一方的になりがちですが、そういった空気が無いのが「ノンプロ研」のいいところだなと改めて感じました😁
次回の講義は6月4日。
しっかりと課題をこなしていこうと思います!
[st-mybox title=”私が受講している講座” fontawesome=”fa-file-text-o” color=”#757575″ bordercolor=”” bgcolor=”#fafafa” borderwidth=”0″ borderradius=”5″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]
ノンプログラマーのための勉強コミュニティ「ノンプロ研」。
コミュニティ内で開催されている「GAS講座」を受講中。
GASやVBA、Pythonを基礎からしっかり学び続けたい方にオススメのコミュニティです。
コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ #ノンプロ研
https://tonari-it.com/community-nonpro-semi/
[/st-mybox]