ノンプロ研GAS中級講座 第1回 スコープと関数 その4
前回のnote
演習1-09 プライベート関数
function privateFunction_() のように、アンダースコアで終わる関数は、プロジェクト外からは呼び出せない。グローバル領域は範囲がプロジェクト全域に及ぶが、プライベートは逆に範囲をそのプロジェクトに限定できる。
演習1-10 引数と仮引数
まずはこのコードとその結果をご覧ください。
ここでは、引数1がx、引数2がyになっている。座席は二個しかない。
6行目で仮引数として、三つ割り当てると、三つ目の座席はないので、最後数字、3は捨てられる。
7行目では、仮引数が一つしかないので、yはundefined となる。
数は合わなくても、動くことは動く。合コンで数が合わなくても実行されている状態である。男子3名、女子2名で合コンが実施された場合、余った男子の気持ちを君は考えたことがあるかい?それぞれペアで会話が盛り上がっているときの所在なさ。いいんだ、君が幸せならそれで...。この合コン概念を提唱した某マスクさん、流石だ。
演習1-11 デフォルト引数
undefined の代わりに、仮引数がないときの規定値を設定できるよ。それがデフォルト引数。相変わらず座席以上の数は捨てられる。
演習1-12 残余引数
意味と使いどころが良く分からない。
余った引数を配列として受け取る???
↓かにみそ先生のこちらのコードのほうは、まだ理解はできそう。
わかるような、わからないような。
演習1-13 可変長引数 ★宿題
任意の数の整数を引数として渡して、その総和を求める関数を作成しましょう。
ちなみに、任意の数で渡せる引数を「可変長引数」といいます。
カヘンチョーインスウ カヘンチョーヒキスウ なんの呪文でしょうか?
ちょっとこの問題、何言ってんのか良く分かんないです。
function sum(...theArgs) {
return theArgs.reduce((previous, current) => {
return previous + current;
});
}
console.log(sum(1, 2, 3));
// expected output: 6
console.log(sum(1, 2, 3, 4));
// expected output: 10こ
これをベースに関数の形にすればいいってこと?
任意の整数ということで、いくつかわかんないので、残余引数構文でなんかうまいことしろってこと???
全然分からないので、皆さんの回答やTA回答をみながら、は~ん?ふえ~?ほえ~?
// 任意の数の整数を引数として渡して、その総和を求める関数を作成しましょう。
// ちなみに、任意の数で渡せる引数を「可変長引数」といいます。
function myIntegerNumbers() {
console.log(returnSum(1, 2, 3, 4, 5))//任意の数の整数
console.log(returnSum(1, 2))//任意の数の整数
}
function returnSum(...args) { //任意の数の整数の総和を求める関数
let sum = 0;
for (arg of args) {
sum += arg;
}
return sum;
}
動いてるけど全然意味が分からない。
reduceでも書けるみたいだが全然わからない。
頭が悪くてつらい。
で、あとドキュメンテーションコメントというのを書く必要があるらしい。
めんどくせえ~~~。
見よう見まねで書いてみる。
// 任意の数の整数を引数として渡して、その総和を求める関数を作成しましょう。
// ちなみに、任意の数で渡せる引数を「可変長引数」といいます。
function myIntegerNumbers() {
console.log(returnSum_(1, 2, 3, 4, 5))//任意の数の整数
console.log(returnSum_(1, 2))//任意の数の整数
}
/**
* 任意の数の整数(可変長引数)を受け取り、その総和を返す関数。
*
* @param {...number} 任意の数の整数
* @return {number} 総和
* @customfunction
*/
function returnSum_(...args) { //任意の数の整数の総和を求める関数。これ単体は実行する関数ではないので、アンダースコアを付与してPrivate関数とする。
let sum = 0;
for (arg of args) {
sum += arg;
}
return sum;
}
良く分からんくて、質問してみた。
こんなに丁寧にコメントいただけて、泣いちゃう。
つづく。