関数

ショッピングカートの商品の価格を決めているとしましょう。数値を取って、税金を加え、四捨五入し、通貨記号でフォーマットします。次の商品、その次の商品でもそれを繰り返す必要があります。これらの4つのステップをあちこちにコピーするのは、バグの温床です。丸め処理を1ヶ所で修正しても、他の3つのコピーはまだ間違ったままです。関数を使えば、そのステップのブロックに一度名前を付けて、必要な時はいつでも実行できます。この章では、そのブロックの書き方、入力の与え方、そして値を取り出す方法について説明します。
関数の宣言と呼び出し
**関数**は、いつでも実行できる名前付きのコードブロックです。ステップを一度書いて、名前を付けたら、その名前で何度でも実行できます。
function キーワードで関数を作ります:
function greet() {
console.log("Hi there");
}これが全体の定義ですが、まだ何も起こっていません。関数を書くことはステップを保存するだけで、実行しません。実際に実行するには、その名前に続けて括弧を書いて関数を呼び出します:
greet(); // Hi there
greet(); // Hi there2行、2つの挨拶、1つのコードブロックから。定義と呼び出しは別のものであり、これを混同するのが最初につまずく点です。
関数に対して、その機能を説明する明確な動詞的な名前(greet、logDivider)を付けてください。変数の命名の時と同じ注意深さで行います。10ヶ所で呼び出される関数は、その名前と同じくらいの可読性しかありません。
greet() のように。この分割は最初は混乱していました。定義はレシピで、呼び出しは実際に料理するものです。同じ関数を好きなだけ何度でも呼び出せます。 パラメータと戻り値
関数は何かを入力できる時により有用です。入力する値は**パラメータ**です。括弧の中に記載される名前で、呼び出す際に渡すもののプレースホルダーになります。
function greet(name) {
console.log("Hi " + name);
}
greet("太郎"); // Hi 太郎
greet("花子"); // Hi 花子name はパラメータです。greet("太郎") と呼び出すと、テキスト "太郎" がその実行中の name にスロットインします。1つの関数、異なる結果、何を渡すかによって変わります。
これまでのところ、これらの関数は何かを出力します。多くの場合、後で使用できるように関数が値を返すことを望みます。それが return がすることです:
function double(number) {
return number * 2;
}
const result = double(5);
console.log(result); // 10return は関数から値を送り出します。double(5) は 10 になり、それを保存、出力、または渡すことができます。出力は画面に値を表示します。戻すことはそれをコードに戻して使い続けることができます。
return は、コードがそれを後で使用できるように値を返します。console.log で出力すると画面に表示されます。戻すことはそれをあなたに返します。その違いを感じるのに時間がかかりました。 アロー関数
関数を書く短い方法があり、**アロー関数**と呼ばれます。変数に保存して、function キーワードの代わりに => の矢印を使用します:
const add = (a, b) => {
return a + b;
};
console.log(add(2, 3)); // 5関数がこのような単一の式の場合、括弧と return を削除して、矢印に値を返させることができます:
const add = (a, b) => a + b;
console.log(add(2, 3)); // 5どちらも同じことをします。現代的なJavaScriptではアロー関数をいたるところで見かけるので、形を認識するのに役立ちます。名前、=、入力、矢印、本体です。
function キーワードの代わりに => で変数に保存されます。本体が1つの式の場合、括弧と return を削除して、矢印が値を返します。この形を常に見るので、それを読むのに快適になるのは高速に報酬を与えます。 ここからの関数の進展
関数は、あなたが自分自身を繰り返するのを止める方法です。ステップのブロックに名前を付けて、入力を与え、値を取り出します。これがクリックされたら、書くほとんどのコードは他の関数を呼び出す小さな関数になり、各々は1つの明確な仕事をします。
ここから、関数は至る所に現れます。配列メソッドに渡してデータのリストを変換し、条件分岐からの分岐ロジックを整理する際に使用し、変数で開始した命名規則に頼ります。コードのブロックを次回コピーしているのを見つけた時が、代わりに関数にラップするシグナルです。

