首页 > 解决方案 > “函数”是 JavaScript 类型吗?

问题描述

“函数”是 JavaScript 类型吗?

例如:

console.log(typeof alert) // returns function

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

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

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

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

提前致谢 :)

标签: javascript

解决方案


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

它说(意译):

  • 给定表达式typeof val
    • 什么时候val实现接口然后返回字符串Object[[Call]]typeof'function'
    • When valis an Objectwhich does not implement [[Call]]thentypeof返回字符串'object'

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


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


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


推荐阅读