“函数”是 JavaScript 类型吗?

Pet*_*ter 5 javascript

“函数”是 JavaScript 类型吗?

例如:

console.log(typeof alert) // returns function
Run Code Online (Sandbox Code Playgroud)

这表明“功能”确实是一种类型

但是,在这个ECMAscript 文档中,它说:

ECMAScript 语言类型有 Undefined、Null、Boolean、String、Symbol、Number、BigInt 和 Object”。

有人可以向我解释一下吗?

提前致谢 :)

Dai*_*Dai 9

typeof操作员的行为记录在第 12.5.5 节中,其中有一个表格可以回答您的问题。

它说(释义):

  • 鉴于表达式typeof val
    • val是一个Object其中实现了[[Call]]接口然后typeof返回字符串'function'
    • valObject它不会执行[[Call]]typeof返回字符串'object'

因此,function不是一个单独的 ECMAScript 类型,而是实际上是Object-type 的特化。


请注意,ECMAScript 规范中的信息非常技术性且非常具体,主要面向 ECMAScript 引擎和工具的实现者 - 虽然它对使用 JS 作为语言的开发人员很有用,但它并不适合初学者或作为语言的介绍 - 或解释基础知识。


“函数对象”的精确定义在 6.1.7.2 中解释