【问题标题】:Why does typeof function return "function"?为什么 typeof 函数返回“函数”?
【发布时间】:2017-07-16 23:51:11
【问题描述】:

如果数组和函数都是对象子类型,那为什么typeof function返回"function"typeof array返回"object"

【问题讨论】:

  • 请显示完整的代码示例。
  • @Ryan 这里需要哪些完整代码?
  • 因为。我真的不认为你会得到比这更好的答案。多年前定义typeof 时,Brendan Eich 决定函数应该与其他对象区分开来,但大多数其他对象不应该彼此区分开来。与其他对象相比,函数对象确实有一个根本区别:它们是可调用的。
  • typeof 不返回对象的构造函数,如果这就是你要问的。它用于一些特定的类型检查。比较(function () {}).constructorFunction[].constructorArray(function () {}) instanceof Object

标签: javascript object types typeof


【解决方案1】:

因为the specificationtypeof 与实现[[Call]] 的对象(即函数)交互时定义了不同的行为。

【讨论】:

    【解决方案2】:

    非常丑陋但正确的答案:因为 ECMAScript 规范是这么说的。 请记住,在底层,每个数组基本上只是一个具有“长度”属性的对象。

    如果要检查给定对象是否实际上是一个数组,请使用Array.isArray

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 2016-09-17
      相关资源
      最近更新 更多