首先来说它俩的区别:
1.typeof是一个一元运算,放在一个运算数之前,运算数可以是任意类型。
2.instaceof是一个二元运算,它主要是判断一个变量是否是某个对象的实例。
接下来先说typeof的用法,它一般返回如下几个结果:“number”、“string”、“boolean”、“object”、“function”、“undefined”。
写法:typeof x || typeof(x);
一般在编程中获取一个变量是否存在就可以用typeof,如if(typeof a!="undefined"){code},而不是用if(a)判断,因为如果a不存在(未声明)则会出错。
注:对于array、null等特殊对象使用typeof返回的一律是object,这正是使用typeof的局限性。如果未定义返回的就是undefined。
接着说说instanceof的用法:
写法:
如:
var a = new Array();
a instanceof Array //true
a instanceof Object //true
注:谈到 instanceof 要多说一个问题,就是 function 的 arguments,大家也许都认为 arguments 是一个 Array,但如果使用 instaceof 去测试会发现 arguments 不是一个 Array 对象,尽管看起来很像。
另外:
但
所以,instanceof 测试的 object 是指 js 语法中的 object,不是指 dom 模型对象。 使用 typeof跟instanceof有区别
会得到object