typeof 的定义和用法:返回值是一个字符串,用来说明变量的数据类型。
- typeof 一般只能返回如下几个结果:number,boolean,string,function,object,undefined。
- 对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。
代码如下:
<script>
var num = 1; //定义一个常数
var arr = [1,2,3]; //定义一个数组
var str = 'this is a test'; // 定义一个字符串
var obj = {name:'xpf',age:23}; //定义一个对象
var fun = function(){name:'xpf'}; //定义一个函数
var test = null; //定义test为null
var a;
console.log(typeof(num)); //number
console.log(typeof(arr)); //object
console.log(typeof(str)); //string
console.log(typeof(obj)); //object
console.log(typeof(fun)); //function
console.log(typeof(test)); //object
console.log(typeof(a)); //undefined
</script>
可以看出typeof在判断
null
、array
、object
时,得到的都是object
。 无法准确判断出具体的类型,因此引入instanceof
Instanceof 的定义和用法:用于判断一个变量是否属于某个对象的实例。
- 返回值为 true 或 false
代码如下:
<script>
var arr = [1,2,3]; //定义一个数组
var obj = {name:'xpf',age:23}; //定义一个对象
console.log(arr instanceof Array); //true
console.log(obj instanceof Object); //true
</script>
确定一个值是哪种基本类型可以使用 typeof 操作符,而确定一个值是哪种引用类型可以使用instanceof 操作符。