Skip to content

Instantly share code, notes, and snippets.

@petamoriken
Created January 2, 2016 20:06
Show Gist options
  • Save petamoriken/3f8589a51b777e569386 to your computer and use it in GitHub Desktop.
Save petamoriken/3f8589a51b777e569386 to your computer and use it in GitHub Desktop.
JavaScript (ES6) の型チェックメモ。
// プリミティブ値
// undefined
hoge === undefined; // strict mode のみ
hoge === void 0;
typeof hoge === "undefined";
Object.prototype.toString.call(hoge) === "[object Undefined]"; // 他に Symbol.toStringTag が "Undefined" なオブジェクトがないときのみ
// null
hoge === null;
Object.prototype.toString.call(hoge) === "[object Null]"; // 他に Symbol.toStringTag が "Null" なオブジェクトがないときのみ
// String
typeof hoge === "string";
// Number
typeof hoge === "number";
// Infinity, -Infinity
hoge === Infinity; // global に Infinity が定義されているときのみ
hoge === Number.POSITIVE_INFINITY;
hoge === -Infinity; // global に Infinity が定義されているときのみ
hoge === Number.NEGATIVE_INFINITY;
// NaN
Number.isNaN(hoge);
// Finite (有限値)
Number.isFinite(hoge);
// Integer (整数値)
Number.isInteger(hoge);
// Boolean
typeof hoge === "boolean";
// true, false
hoge === true;
hoge === false;
// Symbol
typeof hoge === "symbol";
// オブジェクト値
typeof hoge === "object";
// Object
Object.prototype.toString.call(hoge) === "[object Object]"; // 他に Symbol.toStringTag が "Object" なオブジェクトがないときのみ
// Array
Array.isArray(hoge);
Object.prototype.toString.call(hoge) === "[object Array]"; // 他に Symbol.toStringTag が "Array" なオブジェクトがないときのみ
// Function
typeof hoge === "function";
// GeneratorFunction
hoge instanceof (function*(){}).constructor; // 同じ global 環境で作られたときのみ
// Date
hoge instanceof Date; // 同じ global 環境で作られたときのみ
// RegExp
hoge instanceof RegExp; // 同じ global 環境で作られたときのみ
// Error
hoge instanceof Error // 同じ global 環境で作られたときのみ
Object.prototype.toString.call(hoge) === "[object Error]"; // 他に Symbol.toStringTag が "Error" なオブジェクトがないときのみ
// Math (class そのもの)
hoge === Math; // 同じ global 環境のみ
Object.prototype.toString.call(hoge) === "[object Math]"; // 他に Symbol.toStringTag が "Math" なオブジェクトがないときのみ
// JSON (class そのもの)
hoge === JSON; // 同じ global 環境のみ
Object.prototype.toString.call(hoge) === "[object JSON]"; // 他に Symbol.toStringTag が "JSON" なオブジェクトがないときのみ
// Collections (Map, Set, WeakMap, WeakSet)
hoge instanceof Map; // 同じ global 環境で作られたときのみ
Object.prototype.toString.call(hoge) === "[object Map]"; // 他に Symbol.toStringTag が "Map" なオブジェクトがないときのみ
hoge instanceof Set; // 同じ global 環境で作られたときのみ
Object.prototype.toString.call(hoge) === "[object Set]"; // 他に Symbol.toStringTag が "Set" なオブジェクトがないときのみ
hoge instanceof WeakMap; // 同じ global 環境で作られたときのみ
Object.prototype.toString.call(hoge) === "[object WeakMap]"; // 他に Symbol.toStringTag が "WeakMap" なオブジェクトがないときのみ
hoge instanceof WeakSet; // 同じ global 環境で作られたときのみ
Object.prototype.toString.call(hoge) === "[object WeakSet]"; // 他に Symbol.toStringTag が "WeakSet" なオブジェクトがないときのみ
// Promise
hoge instanceof Promise // 同じ global 環境で作られたときのみ
Object.prototype.toString.call(hoge) === "[object Promise]"; // 他に Symbol.toStringTag が "Promise" なオブジェクトがないときのみ
// Proxy
hoge instanceof Proxy // 同じ global 環境で作られたときのみ
Object.prototype.toString.call(hoge) === "[object Proxy]"; // 他に Symbol.toStringTag が "Promise" なオブジェクトがないときのみ
// Reflect (class そのもの)
hoge === Reflect; // 同じ global 環境のみ
Object.prototype.toString.call(hoge) === "[object Reflect]"; // 他に Symbol.toStringTag が "Reflect" なオブジェクトがないときのみ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment