“函数”是 JavaScript 类型吗?
例如:
console.log(typeof alert) // returns function
Run Code Online (Sandbox Code Playgroud)
这表明“功能”确实是一种类型
但是,在这个ECMAscript 文档中,它说:
ECMAScript 语言类型有 Undefined、Null、Boolean、String、Symbol、Number、BigInt 和 Object”。
有人可以向我解释一下吗?
提前致谢 :)
typeof操作员的行为记录在第 12.5.5 节中,其中有一个表格可以回答您的问题。
它说(释义):
typeof val:
val是一个Object其中实现了[[Call]]接口然后typeof返回字符串'function'val是Object它不会不执行[[Call]]则typeof返回字符串'object'。因此,function不是一个单独的 ECMAScript 类型,而是实际上是Object-type 的特化。
请注意,ECMAScript 规范中的信息非常技术性且非常具体,主要面向 ECMAScript 引擎和工具的实现者 - 虽然它对使用 JS 作为语言的开发人员很有用,但它并不适合初学者或作为语言的介绍 - 或解释基础知识。
“函数对象”的精确定义在 6.1.7.2 中解释。