js中typeof数据检测
js中的数据检测
- typeof [value]; 检测数据的类型
- [example] instanceof [class]; 检测数据类型
- [example].constructor===[class];检测实例和类关系的,从而检测数据类型
- Object.prototype.toString.call([value]);检测数据类型
typeof的细节点:
-
typeof检测的结果首先是一个字符串,字符串中包含了对应的数据类型(如:’number’、‘string’、‘boolean’、‘undefined’、‘object’、‘function’、‘symbol’、‘bigint’)
-
特殊的检测结果;
-
NaN/Infinity都是数字类型的,检测结果都为:“number”
-
null的结果是”object"(这是浏览器的BUG:所有的值在计算中都已二进制存储,浏览器中把前三位000的最为对象,而null的二进制前三位就是000,所以被识别为对象,但事实上他不是对象,他是对象指针,是基本数据类型)
-
普通对象/数组对象/正则对象都是"object"类型,这样就无法基于typeof区分普通对象还是数组对象了
-
检测小技巧
console.log(typeof []); // =>"object" console.log(typeof typeof typeof []); //=>"string"
由于typeof返回的结果是一个字符串(字符串中包含了对应的类型),所以连续出现两次及两次以上的typeof检测的结果都是“string"
-