JavaScript中typeof
和instanceof
可以用来判断一个数据的类型,什么时候选择使用typeof
?什么时候选择使用instanceof
?
typeof
运算符
typeof
运算符返回值有以下几种
- 原始数据类型
typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"
- 函数类型
function f() {}
typeof f
// "function"
- undefined
typeof undefined
// "undefined"
var x
typeof x
// "undefined
- Object
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object
instanceof
运算符
instanceof
是判断变量是否为某个对象的实例,返回值为true或false。
var o = {};
var a = [];
o instanceof Array // false
a instanceof Array // true
a instanceof Object // true
typeof 对数组 [] 和对象 {} 的返回值都是Object,无法区分数组和对象,但是instanceof
可以区分。
对于什么时候该使用typeof
和instanceof
- 当变量可能为undefined的时候使用typeof运算符
alert(typeof undefinedVariable); // alerts the string "undefined"
alert(undefinedVariable instanceof Object); // throws an exception
- 当变量可能为null的时候使用
instanceof
运算符
var myNullVar = null;
alert(typeof myNullVar ); // alerts the string "object"
alert(myNullVar instanceof Object); // alerts "false"