如何判断js的数据类型

189 阅读1分钟

首先数据类型分类:

分为基本数据类型和引用数据类型两大类

基本数据类型 : 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"