判断数据类型

42 阅读1分钟

简单数据类型 又叫做基本数据类型或者值类型,复杂类型又叫做引用类型

string , number , boolean , undefined , null 

比较特殊的就是 null

简单数据类型 null  返回的是一个空的对象  object

所有他常用于 : 如果有个变量我们以后打算存储为对象, 暂时没想好放啥, 这个时候就给 null

复杂数据类型
通过new关键字创建的对象都是复杂数据类型(系统对象、自定义对象),如Object、Array、Date等

typeof只能判断基础数据类型

console.log(typeof 1);  // number
console.log(typeof 'abc'); // string
console.log(typeof []);  // object
console.log(typeof {});  // object
console.log(typeof null);  // object

instanceof 只能判断引用数据类型 不能判断基础数据类型

console.log([] instanceof Array);  // true
console.log({} instanceof Object);  // true
console.log('abc' instanceof String);  //false
console.log(123 instanceof Number);   // false

constructor 基本都能判断

console.log(('abc').constructor === String) // true
如果声明了一个构造函数,并将他的原型指向Array 就不能判断

Object.prototype.toString.call()

console.log(Object.prototype.toString.call(123));        //  [object Number]
console.log(Object.prototype.toString.call('abc'));      //  [object String]
console.log(Object.prototype.toString.call([]));         //  [object Array]
console.log(Object.prototype.toString.call({}));         //  [object Object]
console.log(Object.prototype.toString.call(null));       //  [object Null]
console.log(Object.prototype.toString.call(undefined));  //  [object Undefined]