当typeof在函数上运行时,它将返回“ function”作为类型。为什么不返回“对象”?

时间:2019-10-13 23:35:33

标签: javascript typeof

Javascript中的函数是一个对象。

在函数上运行typeof时,为什么返回值“ function”而不是“ object”?

var objLit = {}
console.log(typeof objLit); // "object"

function hello() {
  console.log("hello world");
}
console.log(typeof hello); // "function"

1 个答案:

答案 0 :(得分:3)

因为这就是规范所说的。尽管所有函数都是对象,但是在函数上使用typeof时将返回'function'而不是'object'。参见table

Type of val                            Result:
Object (does not implement [[Call]])   "object"
Object (implements [[Call]])           "function"

(函数具有内部方法[[Call]];非函数没有。)