代码之家  ›  专栏  ›  技术社区  ›  efw

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

  •  0
  • efw  · 技术社区  · 5 年前

    javascript中的函数是一个对象。

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

    var objLit = {}
    console.log(typeof objLit); // "object"
    
    function hello() {
      console.log("hello world");
    }
    console.log(typeof hello); // "function"
    1 回复  |  直到 5 年前
        1
  •  3
  •   CertainPerformance    5 年前

    因为规范就是这么说的。尽管所有函数都是对象,但在使用 typeof 函数将返回 'function' 而不是 'object' 是的。见 table 以下内容:

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

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