js中判断数据类型方法

150 阅读1分钟
  • typeof
  • instanceof
  • constructor(for string|number|boolean|symbol|bigint|object|array|function|symbol)
  • toString()(for all)

typeof => 返回一个字符串,表示未经计算的操作数的类型。

使用: typeof 'Ele' | type('Ele') => 'string'
注意:

  • 可以判断string|number|boolean|undefined|symbol|bigint|function无法判断null|array|object
  • typeof NaN => 'number'
  • 除了Function外,其他通过new操作符创建的,都返回'object',如typeof new Number(1) => 'object'(symbol无法使用new)

instanceof => 用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上

使用: [] instanceof Array => true 注意: 可用于判断是否为array|function


constructor

使用: [].constructor === Array => true
注意:

  • nullundefined会报错,其他类型都能判断
  • constructor可被重写及覆盖

Object.prototype.toString.call() => 返回一个表示该对象的字符串

使用: Object.prototype.toString.call(1) => '[object Number]' 注意:

  • slice返回的字符串Object.prototype.toString.call(1).slice(8, -1) => 'Number',根据slice得到的字符串进行判断
  • 此方法可判断所有数据类型,推荐使用