美文网首页
js中检测数据类型

js中检测数据类型

作者: 隔壁甜言 | 来源:发表于2023-11-06 17:08 被阅读0次

一、typeof

使用typeof检测数据类型,返回值是一个字符串;
检测基本数据类型,准确率高;但是对于引用数据类型,准确率低

1、字符串-----------'string'
2、数值/NaN-------'number'
3、布尔值-----------'boolean'
4、null/object ------'object'

这是由于历史原因造成的。1995年的 JavaScript 语言第一版,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),没考虑null,只把它当作object的一种特殊值。后来null独立出来,作为一种单独的数据类型,为了兼容以前的代码,typeof null返回object就没法改变了。

typeof window; //'object'
typeof {}; // 'object'
typeof []; //'object'

5、函数 -------------'function'
6、未定义的变量--'undefined'

二、instanceof

检测 a 是否是 b 的实例 a instanceof b
instanceof后跟的是构造函数名称
返回的是一个布尔值
注意:所有的对象(function,array,object,基本包装类型)都是Object的实例

console.log(arr instanceof Array);  //true
console.log(arr instanceof Object); //true
console.log(obj instanceof Object); //true
console.log(obj instanceof Array);  //false
var num = new Number("11");
console.log(num instanceof Number); //true
console.log(num instanceof Object); //true

三、Object.prototype.toString

最准确的检测方法,可以检测所有的数据类型
Object.prototype.toString.call(检测的数据).slice(8,-1).toLowerCase(); 得到的是小写的数据类型

console.log(Object.prototype.toString.call(123));                       //[object Number]
console.log(Object.prototype.toString.call('123'));                 //[object String]
console.log(Object.prototype.toString.call(undefined));         //[object Undefined]
console.log(Object.prototype.toString.call(true));                  //[object Boolean]
console.log(Object.prototype.toString.call({}));                        //[object Object]
console.log(Object.prototype.toString.call([]));                        //[object Array]
console.log(Object.prototype.toString.call(function(){}));    //[object Function]
console.log(Object.prototype.toString.call(null));                  //[[object Null]]

相关文章

网友评论

      本文标题:js中检测数据类型

      本文链接:https://www.haomeiwen.com/subject/bucxwdtx.html