Javascript 为什么typeof函数返回“;功能;?

Javascript 为什么typeof函数返回“;功能;?,javascript,object,types,typeof,Javascript,Object,Types,Typeof,如果数组和函数都是对象子类型,那么为什么typeof function返回“function”和typeof array返回“object”?是因为当它与实现[[Call]]的对象交互时,定义了typeof的不同行为(即函数).非常难看,但答案正确:因为ECMAScript规范这么说。 请记住,在较低级别上,每个数组基本上都只是具有“长度”属性的对象 如果要检查给定对象是否为数组,请使用。请显示完整的代码示例。@Ryan此处需要哪一个完整的代码?因为。我真的不认为你会得到比这个更好的答案。多年前

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

是因为当它与实现
[[Call]]
的对象交互时,定义了
typeof
的不同行为(即函数).

非常难看,但答案正确:因为ECMAScript规范这么说。 请记住,在较低级别上,每个数组基本上都只是具有“长度”属性的对象


如果要检查给定对象是否为数组,请使用。

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