】
既然 Date、Array、Function都是引用数据类型(复合数据类型),可是为什么只有 Array 和Date 类型,返回的都是object, 而Function类型返回的就是function ?
】
既然 Date、Array、Function都是引用数据类型(复合数据类型),可是为什么只有 Array 和Date 类型,返回的都是object, 而Function类型返回的就是function ?
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
。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
看 MDN 的文檔
Function
屬於數據類型,而Array
和Date
只是内置对象。