JS中的typeof是用来检测数据类型的,我们都知道JS是一门弱语言,它有个缺点,就是你在做项目的时候,一个数据经过一大推操作过后,你往往都不知道他会变成什么类型的值。所以这时候就需要用typeof来进行数据类型检测。
下面我们来看看typeof的使用方法吧,话不多说,直接上代码
<script>
//五大原始数据类型检测
var u = undefined; //先声明一个undefined类型的
console.log(typeof u);//在终端输出查看一下
var n = null; //声明一个unll类型
console.log(typeof n);//在终端输出查看一下
var num = 12; //声明一个Number类型
console.log(typeof num);//在终端输出查看一下
var str = "12"; //声明一个string类型
console.log(typeof str);//在终端输出查看一下
var bl = true; //声明一个boolean类型
console.log(typeof n);//在终端输出查看一下
//引用数据类型检测
function fn(){};//声明一个函数,函数名:fn
console.log(typeof fn);//在终端输出查看一下
var array = [];//声明一个数组,数组名:array
console.log(typeof fn);//在终端输出查看一下
var a = {name:"小羊",age:18};//声明一个对象,对象名:a
console.log(typeof a);//在终端输出查看一下
</script>
输出结果:
需要注意的是:看第二个输出的,也就是null,它检测出来是一个Object对象,null 有时会被当作一种对象类型,但是这其实只是语言本身的一个 bug,因为数据类型在底层都是以二进制形式表示的,二进制的前三位为 0 会被 typeof 判定为对象类型,null为全0所以会被误判为"object"。
接下来咋们实验一个好玩的东西
<script>
var num = 12;
console.log(typeof typeof num);
console.log(typeof "asd123" / 10);
console.log(typeof ("asd123" / 10));
console.log(typeof typeof "asd123" / 10);
console.log(typeof (typeof "asd123" / 10));
console.log(typeof (typeof typeof "asd123" / 10));
</script>
可以先猜猜这个会在终端输出什么.......
先看结果:
第一行 console.log(typeof typeof num) :
输出的string,是因为它先执行typeof num,得到的结果为字符串的"Number",然后再拿字符串去进行typeof,也就是 typeof "Number",得到的结果为String.
第二行 console.log(typeof "asd123" / 10):
我们来看看为什么结果是NaN,这段代码它是先执行typeof "asd123",得到结果是“String”,然后再用这个结果去除以10,一个字符串除以10,它就会转化字符串为数字,而字符串"asd123"转成数字类型就是NaN,NaN和任何数计算得到的结果都是NaN,所以就会得到结果为NaN。
好啦,小羊很懒,写不动了,下面的结果有不理解的可以评论或者私信我哦。大家一起进步!!!