类型的比较关键字typeof和instanceof
在判断类型比较的时候,通常会用到typeof和instanceof,这两个关键字,但是这两个还是有区别的,在java里面也有这样的关键字,就是instanceof,用来判断entity的。
1、typeof
typeof是一个一元运算,放在一个运算数之前,运算数可以是任意类型。它返回值是一个字符串,该字符串说明运算数的类型。typeof一般只能返回如下几个结果:number,boolean,string,function,object,undefined。 对于Array,Null,DOM对象等特 殊对象使用typeof一律返回object,这正是typeof的局限性,具体的代码和结果。PS:切记,在进行比较的时候,一定要注意大小写,在比较String和string,object和Object是不一样的。
<!DOCTYPE html>
<html>
<head>
<meta name="renderer" content="webkit"/>
<meta name="force-rendering" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<script>/*@cc_on window.location.href="http://support.dmeng.net/upgrade-your-browser.html?referrer="+encodeURIComponent(window.location.href); @*/</script>
<meta charset="UTF-8">
</head>
<body>
<script>
let array = ["123","234"];
let object = {age:20,name:"123"};
let number = 12;
let str = "123";
let n ;
console.log(typeof array);
console.log(typeof object);
console.log(typeof number);
console.log(typeof str);
console.log(typeof n);
console.log(typeof array==="object");
console.log(typeof (array==="object"));
</script>
</body>
</html>
2、instanceof
instanceof 用于判断一个变量是否某个对象的实例。相对于typeof它更加准确,意思就是typeof只可以判断上面的那几个类型,但是在object里面,array是数组,typeof会识别为object,但是instanceof可以识别为Array。PS:instanceof返回的是Boolean类型的,这里的instanceof测试的object是指js语法中的object,不是指dom模型对象。
console.log(array instanceof Array);
console.log(array instanceof Object);
console.log(object instanceof Array);
console.log(object instanceof Object);
总结:通过不同的业务进行使用不用的关键字,同时,其实判断是不是Array,Array有一个本身自带的方法可以用来使用,就是Array.isArray();里面的传参就是要判断的变量,返回的Boolean类型的值来判断。