JavaScript里的typeof与instanceof的用法及区别
JavaScript typeof的使用
typeof用于获取变量的类型,它返回的值是一个字符串,可以为:"number"、"boolean"、"string"、"function"、"object"、"undefined"。
示例
function doSomething(call) {
if(typeof call == 'function') {
call();
}
}
在执行回调函数之前,先判断一下传入的参数是否为函数。
判断一个变量是否存在:
if( a != 'undefined') {
//do something
}
使用"undefined"判断变量是否存在时,可能存在误用:
if( a != undefined) {
//do something
}
这里的区别在于,把undefined作为类型判断,而不是字符串。
弊端:当数据为null时,typeof会返回"object"字符串。这样就不能判断变量是否为null。
JavaScript instanceof的用法
instanceof用于判断对象是否为某特定类型,返回布尔值,而不像typeof那样返回指定那几个值。
var str = new String("hello world");
console.log(str instanceof String); // 输出true
cconsole.log(str instanceof Object); //输出true,因为String为Object的子类