JS typeof与instanceof的区别
typeof 与 instanceof 通常是用来判断一个变量的类型,二者有如下区别:
typeof:
判断一个变量的类型,返回值是字符串形式,返回结果有如下几种:
number,boolean,string,function,object,undefined
当一个变量a未声明,或者声明但未赋值时,typeof a的结果是undefined:
if(typeof a!="undefined")
{
alert("ok")
}
很多前辈喜欢使用if(a)这种写法也是可以的,但是要确保a已经声明,否则会报错
instanceof:
常用于面向对象编程中,用于判断一个变量是否为某个类或者对象的实例,如:
例1)
var a=new Array();
alert(a instanceof Array);//结果是true
例2)
function Person(){};
var a=new Person();
alert(a instanceof Person);//结果是true
另外:
在使用typeof时,对于 Array,Null 等特殊对象使用 typeof 一律返回 object,注意这个坑
使用instanceof时,
var a=new Array();
alert(a instanceof Object);//true, 因为Array是object的子类
对于一个特殊的对象window:
typeof(window) 的结果是true
window instanceof Object 在高级浏览器下,结果是true, 但在IE8及以下浏览器,结果是false