🦔

JavaScriptでundefinedをちゃんと判定するよ

2022/03/12に公開

JavaScriptでundefinedをちゃんと判定する

hensuu === undefinedは実は最適解ではない

ある変数がnullでも0でもなく,undefinedかどうかを判定したいときに

if(hensuu === undefined) {
	// 処理
}

のように書きたくなりますが,実はundefinedは予約後でないので,変数名として使われてしまうことがおきた場合にこれは成立しなくなります.

let hensuu // 初期値としてundefinedが入る

const undefined = 1 // なんてことをするんだ!
  
if(hensuu === undefined) {
  console.log("hensuu is undefined")
}

じゃあどうすれば?

undefinedが変数である可能性が出てきてしまうことに問題があるので,確実undefinedを照合させることが重要です.

案1:型がundefinedであることを確認する

if(typeof hensuu === "undefined") {
  // 処理
}

案2:確実にundefinedが返るvoidを使う

if(hensuu === void 0) {
  // 処理
}

void "" でも void 999でもなんでもいいが,void 0を慣習があるらしい.

でも,これを初見でなにこれ?と感じる人が多い環境だと可読性は低いということになりそう.

利点は短いくらい.

Discussion