JavaScript 数据类型以及判断方法

基本数据类型6个:string、number、Boolean、null、undefined、symbol(ES6新的原始数据类型,代表独一无二的值)

引用数据类型3个:array、object、function

判断是否字符串:

let a = "123";
console.log(typeof a);					// string
console.log(a instanceof String);		// false
console.log(a.constructor === String)	// true
console.log(Object.prototype.toString.call(a) === '[object String]');	// true

判断是否数字:

let a = 123;
console.log(typeof a);					// number
console.log(a instanceof Number);		// false
console.log(a.constructor === Number)	// true
console.log(Object.prototype.toString.call(a) === '[object Number]');	// true

判断是否数组:

let a = [1, 2, 3];
console.log(typeof a);			        // object
console.log(typeof a == Array);			// false

// instanceof
console.log(a instanceof Array);		// true

// constructor
console.log(a.constructor == Array);		// true

// 此方法比较繁琐,但是管用
console.log(Object.prototype.toString.call(a) === '[object Array]');	// true

判断是否对象:

let a = new Object;
a.color = "red";
console.log(a);                               // {color: "red"}
console.log(typeof a);                        // object
console.log(a instanceof Object);             // true
console.log(a.constructor == Object);         // true
console.log(Object.prototype.toString.call(a) == '[object Object]');	// true
console.log(a.toString() == '[object Object]');        // true 对象类型可以直接调用toString方法

判断是否函数方法:

let a = function () {}
console.log(a);                            // ƒ () {}
console.log(typeof a);                     // function
console.log(a instanceof Function);        // true
console.log(a.constructor == Function);    // true
console.log(Object.prototype.toString.call(a) == '[object Function]');		// true

总结:从上面的例子可以看出,typeof方法可以检测出基本数据类型,但是对于引用数据类型的function类型之外2个都是检测位object;instanceof方法可以判断出引用数据类型,不可以判断基本数据类型;constructor和对象原型的toString方法可以判断所有数据类型。虽然写法是有点繁琐,但还是挺管用的呢。以上总结为本人使用例子做的判断总结,如大家有更好的方法欢迎评论哦~

猜你喜欢

转载自blog.csdn.net/joyvonlee/article/details/86628427