😊

【JavaScript Primer】関数と宣言(JavaScript Primerより)

2021/11/21に公開

JavaScript Primer

関数と宣言

Rest parameters

可変長変数を引数に使える

function fn(...args) {
    // argsは引数の値が順番に入った配列
    console.log(args); // => ["a", "b", "c"]
}
fn("a", "b", "c");
// 非推奨
function fn() {
    // `arguments`はインデックスを指定して各要素にアクセスできる
    console.log(arguments[0]); // => "a"
    console.log(arguments[1]); // => "b"
    console.log(arguments[2]); // => "c"
}
fn("a", "b", "c");

関数はオブジェクト

function fn() {
    console.log("fnが呼び出されました");
}
// 関数`fn`を`myFunc`変数に代入している
const myFunc = fn;
myFunc();

Arrow Function

Arrow Functionで問題ない場合はArrow Functionで書き、そうでない場合はfunctionキーワードを使うことを推奨します。

// 仮引数の数と定義
const fnA = () => { /* 仮引数がないとき */ };
const fnB = (x) => { /* 仮引数が1つのみのとき */ };
const fnC = x => { /* 仮引数が1つのみのときは()を省略可能 */ };
const fnD = (x, y) => { /* 仮引数が複数のとき */ };
// 値の返し方
// 次の2つの定義は同じ意味となる
const mulA = x => { return x * x; }; // ブロックの中でreturn
const mulB = x => x * x;            // 1行のみの場合はreturnとブロックを省略できる

コールバック関数

このように関数が値として扱えることを、ファーストクラスファンクション(第一級関数)と呼びます。

const array = [1, 2, 3];
array.forEach((value) => {
    console.log(value);
});
// ↑は引数にArrow funtion(関数)を渡している=コールバック関数
const output = (value) => {
    console.log(value);
};

Discussion