JS判断数据类型方法
JS判断数据类型方法
1、typeof判断数据类型
typeof可以精准的识别五种的数据类型:
Number (数字类型) String(字符串类型) Boolean(布尔类型) Undefined(定义未赋值) Function(函数)
判断null、对象及数组返回的都是object
//判断数字数据类型
var a = 1;
console.log(typeof a); //打印的是小写的字符串number
//判断字符串数据类型
var b = '1';
console.log(typeof b);//打印的是小写的字符串string
//判断布尔数据类型
var c= true;
console.log(typeof c);//打印的是小写的字符串boolnea
//判断undefined类型
var d;
console.log(typeof d);//打印的是小写的字符串undefined
//判断函数类型
var e = function(){};
console.log(typeof e);//打印的是小写的字符串function
//判断数组类型
var f = [1,2,3,4];
console.log(typeof f);//打印的是小写的字符串object
//判断对象类型
var g = {};
console.log(typeof g);//打印的是小写的字符串object
//判断null类型
var h = null;
console.log(typeof h);//打印的是小写的字符串object
2、instanceof判断数据类型
因为typeof不可以精准的判断对象、数组和null,因此我们出现了instanceof。
instanceof 用来判断一个对象是哪个构造函数的实例用的 A(对象数据) instanceof B(构造函数),
专门用来解决判定数组和对象的时候使用
//如果你想要判断这个数据是不是数组 data instanceof Array
var data = [];
console.log(data instanceof Array);//true
//如果你想要判断这个数据是不是对象 data instanceof Object
var data1 = {};//'object'
console.log(data instanceof Object);
3、===判断数据类型
全等于可以用来判定null和undefined的时候使用;因为他们两个都是数据类型,但是这数据类型当中只有一个值;
//如果你想要知道这个数据是不是null 用===
var data = null;
console.log(data === null); //true
//如果你想要知道这个数据是不是null 用===
var data1;
console.log(data1 === undefined); //true
4、利用Object原型的toString()方法来判断数据类型
Object.prototype.toString方法原本是给Object的实例化对象使用的,通过call或apply来改变调用者,来实现自主判断数据类型
var a = 1; //判断数字数据类型
console.log(Object.prototype.toString.call(a)); //打印的是[object Number]
var b = '1'; //判断字符串数据类型
console.log(Object.prototype.toString.call(b)); //打印的是[object String]
var c = true; //判断布尔数据类型
console.log(Object.prototype.toString.call(c)); //打印的是[object Boolean]
var d; //判断undefined数据类型
console.log(Object.prototype.toString.call(d)); //打印的是[object Undefined]
var e = function () { }; //判断函数数据类型
console.log(Object.prototype.toString.call(e)); //打印的是[object Function]
var f = [1, 2, 3, 4]; //判断数组数据类型
console.log(Object.prototype.toString.call(f)); //打印的是[object Array]
var g = {}; //判断对象数据类型
console.log(Object.prototype.toString.call(g)); //打印的是[object Object]
var h = null; //判断null数据类型
console.log(Object.prototype.toString.call(h)); //打印的是[object Null]
var i = Symbol(); //判断Symbol数据类型(Symbol是ES6新增的基础数据类型)
console.log(Object.prototype.toString.call(i)); //打印的是[object Symbol]
//判断出类型后通过字符串的slice()方法截取出自己要的数据类型,再调toLowerCase()方法,把所有的字母变成小写
console.log(Object.prototype.toString.call(a).slice(8,-1).toLowerCase());
//封装方式实现判定所有数据类型
function checkType(data){
return Object.prototype.toString.call(data).slice(8,-1).toLowerCase();
}