typeof的取值类型
- “undefined”——如果这个值未定义:
alert(typeof(a));
- “boolean”——如果这个值是布尔值:
alert(typeof(true));
alert(typeof(false));
- “string”——如果这个值是字符串:
alert(typeof('abc'));
- “number”——如果这个值是数值,NaN本身也属于数字类型:
alert(typeof(10));
alert(typeof(NaN));
- “object”——如果这个值是对象或null:
alert(typeof([1,2,3]));
alert(typeof(null));
- “function”——如果这个值是函数:
alert(typeof(Date));
- “symbol”——Es6新增的类型:
alert(typeof symbol);
typeof和instanceof的区别
typeof:在 JavaScript 中,typeof运算符返回一个用来表示表达式的数据类型的字符串。判断一个变量的类型常常会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 “object”。
var b=true;
console.log(typeof b);//'boolean'
var c="";
console.log(typeof c);//'String'
var d=1;
console.log(typeof d);//'Number'
var e,f=undefined;
console.log(typeof e,typeof f);//'undefined' 'undefined'
var a=null;
console.log(typeof a);//'object'
var obj={};
console.log(typeof obj);//'object'
var arr=[1,2,3];
console.log(typeof arr);//'object'
var fn=function(){
alert("aaa");
}
console.log(typeof fn);//'function'
instanceof:用来检测某个对象是不是另外一个对象的实例,用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。
var obj={
b1:[1,console.log],
b2:function(){
alert(111);
}
}
console.log(obj instanceof Object); //true
console.log(obj.b1 instanceof Object,obj.b1 instanceof Array);//true true
console.log(obj.b2 instanceof Object,obj.b2 instanceof Function);//true true
var a=null;
console.log(a instanceof Object);//false