【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)); // エラー(高さが指定されていません)
つまり……エラーメッセージを例外として投げる関数を用意しておき、
各引数の既定値として、その関数を指定する。
そうすることで、値が渡ってくれば普通にその値を使うものの、値が渡ってこなければ例外処理が走るようになる。
個人的なキモは、引数の既定値には値しか使えないと思っていたのに対して、戻り値のある関数を指定することも可能だ、ということ。
今回は必須指定のやり方だったが、この方法を使うことで、別の気付きにつながる気がする。