数据类型
七种原始数据类型(值类型/基本类型):
number
:用于任何类型的数字:整数或浮点数,在±(253-1)
范围内的整数。bigint
:用于任意长度的整数。string
:用于字符串:一个字符串可以包含 0 个或多个字符,所以没有单独的单字符类型。boolean
:用于true
和false
。null
:用于未知的值 —— 只有一个null
值的独立类型。undefined
:用于未定义的值 —— 只有一个undefined
值的独立类型。symbol
:用于唯一的标识符。
非原始数据类型(引用数据类型/对象类型):
object
:用于更复杂的数据结构。- 对象(Object)
- 数组(Array)
- 函数(Function)
检测数据类型
typeof:string
、number
、boolean
、null
、undefined
、symbol
、object
、function
- 检测基本数据类型,
null
会被检测为object
- 检测复杂数据类型,除
function
外,均为object
instanceof:检测构造函数的 prototype
属性是否出现在某个实例对象的原型链上
- 只能检测复杂数据类型
console.log([] instanceof Array) // true
toString:
toString()
是Object
的原型方法,调用该方法,默认返回当前对象的[[Class]]
。这是一个内部属性,其格式为[object Xxx]
,其中 Xxx 就是对象的类型。- 对于
Object
对象,直接调用toString()
就能返回[object Object]
。而对于其他对象,则需要通过call / apply
来调用才能返回正确的类型信息。 Object.prototype.toString.call('') ; // [object String] Object.prototype.toString.call(1) ; // [object Number] Object.prototype.toString.call(true) ; // [object Boolean] Object.prototype.toString.call(Symbol()); // [object Symbol] Object.prototype.toString.call(undefined) ; // [object Undefined] Object.prototype.toString.call(null) ; // [object Null] Object.prototype.toString.call(new Function()) ; // [object Function] Object.prototype.toString.call(new Date()) ; // [object Date] Object.prototype.toString.call([]) ; // [object Array] Object.prototype.toString.call(new RegExp()) ; // [object RegExp] Object.prototype.toString.call(new Error()) ; // [object Error] Object.prototype.toString.call(document) ; // [object HTMLDocument] Object.prototype.toString.call(window) ; // [object global] window 是全局对象 global 的引用
constructor:
const arr = [] console.log(arr.constructor === Array)
只能检测由字面量创建出来的数据类型
isArray:
console.log(Array.isArray([]));
- 注意没有
isObject