-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Robert Yao edited this page Jul 6, 2023
·
9 revisions
JavaScript 发展至今,一直保持着弱类型(weakly typed)语言的特性,也就一直没有提供准确的检测数据类型的内置方法。因此开发者就不得不自己编写校验数据类型的函数方法,Types.js 也是因为这个原因才诞生的。
根据 MDN 的《JavaScript data types and data structures》这篇文档介绍,JavaScript 将数据分为了以下几个大类:
其中原始值是是我们最常用的“数据”,JavaScript 有7个原始值:
原始值基本都是可以使用 JavaScript 中提供的 typeof 关键字来判断数据类型的:
let value
typeof value // -> 'undefined'
typeof false // -> 'boolean'
typeof 23 // -> 'number'
typeof BigInt(66) // -> 'bigint'
typeof 'JavaScript' // -> 'string'
typeof Symbol('prop') // -> 'symbol'
前面之所以说原始值基本都是可以用 typeof 来判断数据类型,是因为 null 是一个例外:
typeof null // -> 'object'
null 是一个对象,是不是觉得很奇怪?
除原始值以外,JavaScript 中其它的值都应该是对象(引用)类型的值。typeof 关键对其它的值的判断几乎就没有什么做了,例如以下判断:
typeof [] // -> 'object'
typeof {} // -> 'object'
typeof function(){} // -> 'object'
typeof class {} // -> 'object'
typeof new Date() // -> 'object'
typeof new RegExp() // -> 'object'
typeof new Error() // -> 'object'
typeof 的结果都一样:'object'(对象),而作为开发者是希望知道这些“对象”具体是什么“对象”的。