JavaScript精确判断数据类型的方法

// 就这几行就完了
  function getType(a) {
    var type = typeof a
    if(type != 'object') return type
    return Object.prototype.toString.call(a).slice(7, -1)
  }
  
  console.log(getType(1)) // number
  console.log(getType([1, 2])) // Array

首先,先用typeof判断基础类型,如果是基础类型直接返回。如果typeof返回object的话,我们要继续进行判断。
使用Object.prototype.toString.call(a)可以获得精确的类型,但是他返回的结果是这样的:

Object.prototype.toString.call({a: 1}) // "[object Object]"
Object.prototype.toString.call([1, 2]) // "[object Array]"
Object.prototype.toString.call(function a(){}) // "[object Function]"
Object.prototype.toString.call(new Error) // "[object Error]"

我们可以看出,我们需要返回的字符串中第二个单词,所以使用slice方法数一下一截取就好了。


版权声明:本文为weixin_43234831原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。