Undefined

Undefined は対象に値が何も入っていない状態を表します。

変数定義時に値を指定しない場合や、

let foo;
// foo === undefined

引数を要求する関数で引数を渡さなかった場合、

const fn = str => { /* ... */ };
fn(); // str === undefined

などによく見られます。

安全な undefined 確認

実を言うと undefined は予約語として扱われていないので、コードを書く人が好きに値を設定できてしまいます。もしも、誰かが変な値を指定してしまうと今書いているコード部分の=== undefinedで比較している箇所がうまく動かなくなるかもしれません。

そのようにならないようにundefinedの代わりにvoid 式を使うと良いです。void 式は式に関係なく必ずundefinedを返す式です。

// どこか遠い所
const undefined = 'foo';

// ---

const myFunction = () => {
  console.log(undefined); // 'foo' 😱
  // 以下の式が`false`に
  console.log(undefined === void 0);
}

myFunction();