【问题标题】:When typeof is run on a function, it returns "function" as the type. Why doesn't it return "object"?当 typeof 在函数上运行时,它返回“function”作为类型。为什么它不返回“对象”?
【发布时间】:2019-10-13 23:35:33
【问题描述】:

Javascript 中的函数是一个对象。

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

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

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

【问题讨论】:

标签: javascript typeof


【解决方案1】:

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

val 结果的类型: 对象(不实现 [[Call]])“对象” 对象(实现 [[Call]])“函数”

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

【讨论】:

  • 好的,我明白了。谢谢。因此,如果它是一个使用调用(又名函数)的对象,typeof 将返回“function”作为值。如果它是一个没有实现调用的对象,它将返回“object”作为值。
猜你喜欢
  • 2015-07-21
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多