いろいろな判定

真の場合。偽の場合は、!== を使う。

プリミティブ値の判定

文字列の判定

if (typeof a === 'string') {}

数値の判定

if (typeof a === 'number') {}

ブーリアンの判定

if (typeof a === 'boolean' && value) {}

undefinedの判定

if (typeof a === 'undefined') {}

nullとの比較

typeof null を実行すると「object」が返却されるため、typeof でnullをテストするのは効率が悪い。そこで、=== や !== を使う。

if (a !== null) {}

参照値の判定

// Dateの判定
if (a instanceof Date) {}

// RegExpの判定
if (a instanceof RegExp) {}

// Errorの判定
if (a instanceof Error) {}

// 関数の判定
if (a instanceof Function) {}

// 配列の判定
if (Object.prototype.toString.call(a) === '[object Array]') {}

// 配列の判定
if (Array.isArray(a)) {}

プロパティの判定

// Good
if ("propertyName" in object) {}

// Good
if (object.hasOwnProperty("propertyName")) {}

// Bad: 偽値チェック
if (object[propertyName]) {}

// Bad:  nullと比較
if (object[propertyName] != null) {}

// Bad:  undefinedと比較
if (object[propertyName] != undefined) {}