今回は関数だ。関数は、ひとまとまりの処理に名前をつけて、必要なときに呼び出せるようにする仕組みだよ。

function greet() {
  return 'Hello!';
}

const message = greet();

console.log(message);

greet() と丸括弧をつけると、関数の中が実行されるんですね。

その通り。定義しただけでは何も起きない。呼び出すと中の処理が動き、return に続く値が呼び出した場所へ返る。

値に名前をつけたときと、少し似ています。

いい見方だ。const が値に名前をつけるなら、function は処理に名前をつける。違うのは、呼び出すたびに実行されるところだよ。

呼び出す側から値を渡せる関数も作れる。

function add(a, b) {
  return a + b;
}

console.log(add(1, 2));
console.log(add(10, 20));

最初は3、次は30です。同じ処理に違う値を渡せるんですね。

ab を仮引数、呼び出すときに渡す値を実引数と呼ぶ。入力が引数、出力が戻り値だと考えると、流れを追いやすい。

ただ、このコードはTypeScriptなのに、エディタが ab に注意を出しています。

よく気づいたね。Parameter 'a' implicitly has an 'any' type. と出ているはずだ。引数にどんな値が渡ってくるのか、どこにも書かれていないからだよ。

これまでは、何も書かなくても平気でした。

これまでは const price = 800; のように、右側に値があった。TypeScriptはそれを見て判断できる。でも関数の入口には、まだ値が来ていない。

解決方法は少し先で扱う。まずは、関数が「入力を受け取り、処理し、結果を返す」という流れをつかもう。次は、値をまとめて扱う方法だ。