首先数据类型分类:
分为基本数据类型和引用数据类型两大类
基本数据类型 : Number , boolearn , String , Null , undefined
引用数据类型 : Function , Array , Object
undefined : 表示变量声明,但未初始化
unll : 表示一个准备用来保存对象,但还没有复制,一般null值表示一个空指针
判断js数据类型的方法一 : typeof
它是用来区别除了null外的原始数据类型,对象类型的可以从普通对象里面
识别出函数:
typeof undefined // "undefined"
typeof null // "object"
typeof 1 // "number"
typeof "1" // "string"
typeof Symbol() // "symbol"
typeof function() {} // "function"
typeof {} // "object"
typeof 不能识别 null 如果想要判断是否为 null,可以直接使用===全等运算符来判断:
let a = null
a === null // true (或者使用下面
的 Object.prototype.toString 方法)
判断js数据类型的方法二 : instanceof
instanceof 不能用于判断原始数据类型的数据:
3 instanceof Number // false
'3' instanceof String // false
true instanceof Boolean // false
instanceof 可以用来判断对象的类型:
var date = new Date()
date instanceof Date // true
var number = new Number()
number instanceof Number // true
var string = new String()
string instanceof String // true
需要注意的是,instanceof 的结果并不一定是可靠的,因为在 ECMAScript7 规范中可以通
过自定义 Symbol.hasInstance 方法来覆盖默认行为。
判断js数据类型的方法二 Object.prototype.toString.call()原型方法来判断引用数据类型
Object.prototype.toString.call(undefined).slice(8, -1) // "Undefined"
Object.prototype.toString.call(null).slice(8, -1) // "Null"
Object.prototype.toString.call(3).slice(8, -1) // "Number"
Object.prototype.toString.call(new Number(3)).slice(8, -1) // "Number"
Object.prototype.toString.call(true).slice(8, -1) // "Boolean"