undefinedの判定は変数をどのように考えるかで判定方法が異なります。
変数自体が定義されていないかを判定する場合は「typeof x === 'undefined'」です。
この書き方は変数の存在自体を確認するものです。
存在以外の判定が出来ないから良くないと書かれますが、それは個別にやるべきことです。
「x === undefined」この書き方は、評価された変数が存在するかを判定するものであり、変数自体が定義されてないと、ReferenceErrorが発生するのでコンソールエラーが発生して処理が止まります。
この書き方が使えるのは変数が定義されているけど中身が登録されていない場合です。
if(typeof x === 'undefined'){ console.log("0"); } if (x === undefined){ console.log("1");//Uncaught ReferenceErrorで処理が止まる }
x === undefinedが使える場合。
let x; console.log(x === undefined); // true
let x = undefined; console.log(x === undefined); // true