
「foo == null」とは
JavaScriptでは「null == undefined」がtrueになるため、「if (foo == null)」と書いて判定するコードを書いている人がたまにいます。
しかし、JavaScriptでは厳密等価 (===) を使用することが常識となっているため、、「if (foo == null)」のような書き方は好ましくないです。
「null == undefined」がtrueになることを知らない人やESLintなどが「null === undefined」に書き換えてしまうリスクもあります。
JavaScript
let foo
let bar = null
console.log(foo == null) // true
console.log(bar == null) // true
「!(foo ?? null)」で判定する
だからと言って「if (foo === null || foo === undefined)」だとコードが長くなってしまします。
そんなときは「!(foo ?? null)」のようにNullish coalescing operatorを使って、fooがnullまたはundefined の場合に、nullを返すようにすれば短いコードで判定できます。
JavaScript
let foo
let bar = null
console.log(!(foo ?? null)) // true
console.log(!(bar ?? null)) // true
書き方を変えて以下のように書くと、どちらもnullになっていることが確認できます。
JavaScript
const foo = undefined
const bar = null
console.log(foo ?? null) // null
console.log(bar ?? null) // null
「foo == null」のような判定の書き方だと事故が発生しやすいので、なるべく使わないことをオススメします。