ES6/JS如何判断一个变量是空对象还是函数?

案例:
有这么一个变量a初始值为{}
满足一定条件后,a将为一个函数: console.log如下

a: f (xxx) {
    xxx
}

请问我要如何判断上面两种区别呢?谢谢

阅读 7.4k
5 个回答
Object.prototype.toString.call([])
"[object Array]"

Object.prototype.toString.call(function(){})
"[object Function]"

这跟es6没有关系。console.log只是浏览器(宿主环境)自己实现的东西,并没有列入ECMAScript标准。

至于如何判断, 就普通的判断原始类型不就好了吗:
Object.prototype.toString.call(obj) === '[object Object]';

事例讲解

最简单的:
typeof {} => object
typeof function(){} => function

var i = {}
typeof i
//"object"
i = function(){}
typeof i
//"function"
//判断是否为对象
function isObject(obj) {
    return Object.prototype.toString.call(obj) === '[object Object]';
}

//判断是否为funciton
function isArray(obj) {
    return Object.prototype.toString.call(obj) === '[object Function]';
}

这里有我平时收集的一些关于类型判断的方法 : 类型判断

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题