typeof引用类型都返回 object, 只有function返回function, 是什么原因
】
既然 Date、Array、Function都是引用数据类型(复合数据类型),可是为什么只有 Array 和Date 类型,返回的都是object, 而Function类型返回的就是function ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
看 MDN 的文檔
Function
屬於數據類型,而Array
和Date
只是内置对象。JS 的几种基本类型(
typeof
运算的结果),typeof
的运算结果只可能是以下几种基本类型之一:"string"
"number"
"boolean"
"undefined"
"object"
"function"
"symbol"
<-- ES2015 加入"bigint"
<-- ES2020 加入其中,有几点要注意
undefined
表示无值,是单独一种类型null
表示空对象,是object
类型的一种值,所以typeof null
是"object"
(function a() {}) instanceof Object === true
,正因为如此 TypeScript 中可以使用接口来声明函数类型boolean
,所以类型的值都可以用于逻辑判断(比如if (...)
这里的...
部分),但是判真/假有一定的规则,可以参考 MDN 的 Truthy 和 Falsy 两部分内容Date
、Array
都是具体的类,是更高一级的类型,其基本类型都是object
,也就是说typeof
计算的结果都是object
。如果想判断具体是不是某种类类型,可以用instanceof
来判断;也可以用obj.constructor.name
获取具体的类名(但并不一定每种情况都能正确获取,因为会有很多神奇的写法来定义类)什么什么原因?
JS 不就这么设计的么?
只有
undefined
、boolean
、number
、string
、function
、bigint
、symbol
几种类型单独返回,剩下的全是object
。