1.typeof主要是用来检测一些简单的数据类型的
2.instanceof主要是用来检测一些复杂数据类型的更加的准确
3.还有一种检测数据类型的Object.prototype.toString.call(传入你判断的变量)这种方法检测数据比较全部 但是缺点就是IE兼容性较低
<script>
//typeof :主要是用来检测一些简单的数据类型比如(布尔、string、number、undefined、unll 等等...)
//instanceof:主要是用来检测一些复杂的数据类型比如(Array、Object、function 等等....)
var a = 10; //Number;
var a = 'hao'; //string;
var a = undefined; //undefined;
var a = true; //boolean
var a = [1, 2]; //Object
var a = {}; //Object
var a = new Object; //Object
var a = function() {
console.log(11);
} //function
var a = null; //object
console.log(typeof a);
//1.从上面可以看出来我们的typeof来检测一些简单数据类型可以准确的反映出对应的数据类型,但是复杂数据类型只能返回的是Object 比如这里的数组则返回的是Object而不是准确的Array 这时候typeof就有些力不从心了
// 2.instanceof能准确的返回对应的复杂数据类型
// instanceof语法介绍: 你需要吧你判断的变量放在instanceof之前 同时你要吧你判断的类型放在instanceof之后 如果结果是属于你判断的类型则返回true如果不是则返回的是false
var a = [1, 2];
console.log(a instanceof Array); //true
console.log(a instanceof Number); //false 因为a对应的数据类型不是数字型而是数组型
var a = {};
console.log(a instanceof Object); //true
// instanceof还能检测出是不是new 构造函数对象的实例化
function preom(uname, age) {
this.uname = uname;
this.age = age
}
var pr = new preom('浩哥', 20)
console.log(pr instanceof preom); //true pr是preom的构造函数实例对象 所以返回true
// 3.Object.prototype.toString.call(传入你判断的变量) 这个方法检测数据类型比较全面 缺点就是IE浏览器兼容性低
var a = [1, 2];
console.log(Object.prototype.toString.call(a)); //[object Array]
var a = {};
console.log(Object.prototype.toString.call(a)); //[object Object]
</script>