为啥 typeof 函数返回“函数”?
Posted
技术标签:
【中文标题】为啥 typeof 函数返回“函数”?【英文标题】:Why does typeof function return "function"?为什么 typeof 函数返回“函数”? 【发布时间】:2017-07-16 23:51:11 【问题描述】:如果数组和函数都是对象子类型,那为什么typeof function
返回"function"
和typeof array
返回"object"
?
【问题讨论】:
请显示完整的代码示例。 @Ryan 这里需要哪些完整代码? 因为。我真的不认为你会得到比这更好的答案。多年前定义typeof
时,Brendan Eich 决定函数应该与其他对象区分开来,但大多数其他对象不应该彼此区分开来。与其他对象相比,函数对象确实有一个根本区别:它们是可调用的。
developer.mozilla.org/en-US/docs/Web/javascript/Reference/…
typeof
不返回对象的构造函数,如果这就是你要问的。它用于一些特定的类型检查。比较(function () ).constructor
是Function
和[].constructor
是Array
和(function () ) instanceof Object
。
【参考方案1】:
因为the specification 为typeof
与实现[[Call]]
的对象(即函数)交互时定义了不同的行为。
【讨论】:
【参考方案2】:非常丑陋但正确的答案:因为 ECMAScript 规范是这么说的。 请记住,在底层,每个数组基本上只是一个具有“长度”属性的对象。
如果要检查给定对象是否实际上是一个数组,请使用Array.isArray。
【讨论】:
以上是关于为啥 typeof 函数返回“函数”?的主要内容,如果未能解决你的问题,请参考以下文章