Blog

类型检测最佳实践

2018-01-31

函数

使用 typeof x === 'function'

const a = function () {};
const b = new Function();
function c () {}

typeof a; // 'function'
typeof b; // 'function'
typeof c; // 'function'

数组

使用 Array.isArray()

if (!Array.isArray) {
  Array.isArray = function(arg) {
    return Object.prototype.toString.call(arg) === '[object Array]';
  };
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray

数字

Number.isNumber()

字符串

使用 Object.prototype.toString.call(x) === '[object String]'

const a = 'str';
const b = new String('str');

typeof a; // 'string'
typeof b; // 'object'

Object.prototype.toString.call(a); // '[object String]'
Object.prototype.toString.call(b); // '[object String]'

undefined

使用 typeof x === 'undefined'

const a = undefined;

typeof a; // 'undefined'
a === undefined; // true

typeof b; // 'undefined'
b === undefined; // Error

null

使用 x === null

const a = null;

a === null; // true