为啥 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 () ).constructorFunction[].constructorArray(function () ) instanceof Object 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于为啥 typeof 函数返回“函数”?的主要内容,如果未能解决你的问题,请参考以下文章

R语言每次运行结果返回值的个数为啥不同

获取函数的返回类型

测试数据类型函数typeof( )的用法

JavaScript--函数(普通函数 & 箭头函数 ) & 异常 & typeof关键字 & 方法

为啥 <object> 的类型是函数?

c# winform里一个函数返回几个值,我把这几个值返回到一个数据集里