NACの勉強の経過を綴るところ

個人的なコードの勉強

【JS】必須の引数指定

JS逆引きレシピ本、120(P195)。


関数に引数を渡す場合、それを必須指定することができない。
undefinedかどうかを判定して分岐させるしかない気がしていたが、面白いやり方が載っていたのでメモ。


引数には既定値を指定することができる。
値が引き渡されなかった場合に、デフォルトで代入する値のことだ。

function getData(a = 2, b = 4) {
    return a * b;
}

console.log(getData(4,6));  // 24;
console.log(getdata());  // 8


この既定値を使用して、必須指定していた。

// 例外を投げる関数
function required(msg) {
    throw new Error(msg);
}

function getSquareArea(
    width = required('幅が指定されていません'),
    height = required('高さが指定されていません')) {
    returan width * height;
}

console.log(getSquareArea(2));  // エラー(高さが指定されていません)

つまり……エラーメッセージを例外として投げる関数を用意しておき、
各引数の既定値として、その関数を指定する。
そうすることで、値が渡ってくれば普通にその値を使うものの、値が渡ってこなければ例外処理が走るようになる。


個人的なキモは、引数の既定値には値しか使えないと思っていたのに対して、戻り値のある関数を指定することも可能だ、ということ。
今回は必須指定のやり方だったが、この方法を使うことで、別の気付きにつながる気がする。