数据类型
ES6之前的数据类型可以分为二种,一种是基本数据类型
、另外一种是对象类型
基本数据类型
String:任意的字符串
Number: 任意的数字
Boolean: true/false
Undefined: undefined
null: null
对象类型
Object: 任意对象
Function: 一种特别的对象(可以调用执行)
Array: 一种特别的对象(具有下标,内部的数据是有序的)
判断数据类型
在js中我们一般需要对数据类型进行判断,我们常用的有三种分别是:
- typeof
- instanceof
- ===
typeof
typeof 操作符用于检测给定变量的数据类型可以判断的类型有undefined/数值/字符串/布尔值/function
不能判断的数据类型有null与object object与Array
为什么不能判断这两种呢?下面代码就可以证实。
console.log(typeof null)//object
let arr = [1,2,3]
console.log(typeof arr)//object
上面的代码明显可以看到 这两个情况无法判断数组和nul的数组类型,那么我们在js中应该如何判断该两种数据类型呢?别着急接着往下看
instanceof
instanceof用来判断对象的具体类型,说白了就是判断一个对象是不是另外一个对象的实例,比如a instanceof B
用来判断 a 是不是 B的实例,那么咱们就可以证明let arr = [1,2,3] console.log(typeof arr)
这行代码为什么不能用typeof判断了,当然null无法判断,因为null属于基本数据类型,它是无法通过instanceof判断的,这个咱们后边再说。
let arr = [1, 2, 3]
console.log(arr instanceof Object)// true
以上代码就说明了arr是Object的实例
===
===是用来判断undefined
和null
的,因为只有这两个基本数据类型是只有一个值的,其他的数据类型都是二个或任意个,那么咱们就可以通过 ===
来判断null
这个数据类型了,当然还有undefined
console.log(null === null)//true
let a
console.log(a === undefined)//true