【JavaScript】関数の引数チェック
2022/04/23
JavaScript はデフォルトで引数のチェックを行わない
function greeting(str) {
console.log("Hello, " + str);
}
greeting("world"); // Hello, world
greeting(); // Hello, undefined
greeting("world", "happy"); // Hello, world
足りない引数の値は undefined になり、多く引数を渡しても使われないだけでエラーにならない
自前で引数チェックを実装する
引数の有無をチェックする
引数の値が undefined かどうかチェックする
function greeting(str) {
if (str === undefined) {
throw new Error("引数を指定してください");
}
console.log("Hello, " + str);
}
greeting("world"); // Hello, world
greeting(); // Error: 引数を指定してください
引数の数をチェックする
arguments という変数に引数の配列が入っているので、その数をチェックする
function greeting(str) {
if (arguments.length > 1) {
throw new Error("引数は1つにしてください");
}
console.log("Hello, " + str);
}
greeting("world"); // Hello, world
greeting("world", "happy"); // Error: 引数は1つにしてください
アロー関数には arguments がないので、残余引数を使ってチェックする
const greeting = (str, ...others) => {
if (others.length > 0) {
throw new Error("引数は1つにしてください");
}
console.log("Hello, " + str);
}
greeting("world"); // Hello, world
greeting("world", "happy"); // Error: 引数は1つにしてください
引数の型をチェックする
typeof 演算子を使って引数の型をチェックする
function greeting(str) {
if (typeof str !== "string") {
throw new Error("引数は文字列型にしてください");
}
console.log("Hello, " + str);
}
greeting("world"); // Hello, world
greeting(123); // Error: 引数は文字列型にしてください