在日常业务开发当中,经常会遇到需要对某种数据类型进行判断,这里介绍几种判断js数据类型的方式~
- typepf 关键字
console.log(typeof 1) // number
console.log(typeof true) // boolean
console.log(typeof 'shang') // string
console.log(typeof function) // function
console.log(typeof undefined) // undefined
console.log(typeof {}) // object
console.log(typeof []) // object
console.log(typeof null) // object
这里要着重注意一下后三个类型鉴定:
typeof {} === 'object',看起来好像没什么问题,然而后面的[]和null就有点花头了.
首先,我们先来聊一下为什么typeof [] === object.
其实在js中,数组本身就是一种特殊的'对象',且作为复杂数据类型的对象和数组的具体值都是存储在堆当中,而栈中仅仅存储了一个指向堆地址的指针,所以这里可以理解为typeof将数组解析成了对象.
而null最有意思,首先null本来就是js设计过程中的一个意外,属于由于设计错