龙空技术网

js数据类型判断方法

NativeBase 477

前言:

现在大家对“判断js类型的数据”都比较关切,大家都想要学习一些“判断js类型的数据”的相关资讯。那么小编同时在网摘上网罗了一些有关“判断js类型的数据””的相关知识,希望姐妹们能喜欢,小伙伴们快快来了解一下吧!

javascript中常用数据类型判断方法有:typeof、instanceof、constructor、Object.prototype.toString.call()

typeof- - -可以检测出基本数据类型(除了null)

检测方法: typeof xx

优点:使用简单

缺点:复杂类型检测出来都是 object,null 也是 object

typeof操作符可以返回一个值的数据类型,例如:

typeof 123; // "number"typeof "hello"; // "string"typeof true; // "boolean"typeof undefined; // "undefined"typeof null; // "object" 注意这个结果是历史遗留问题typeof {}; // "object"typeof []; // "object"typeof function(){}; // "function"

需要注意的是,typeof操作符对于null值的判断会返回"object",这是历史遗留问题,因此需要特别注意。

instanceof 原型链检测

检测方法:xx instanceof yy - - -检测 xx 的原型链上是否 存在 yy

优点:能检测出引用类型

缺点:instanceof 不能检测出基本类型,且不能跨 iframe

String 和 Date 对象属于 Object 对象

instanceof运算符可以用来判断一个对象是否是某个构造函数的实例。例如:

const a = new Date();a instanceof Date; // truea instanceof Object; // truea instanceof Array; // false

需要注意的是,instanceof运算符只能用来判断对象的类型,不能用来判断基本数据类型的类型。

constructor 构造函数检测

检测方法:xx.constructor- - -返回 xx 的 构造函数

优点:基本能检测所有的类型(除了 null 和 undefined )

缺点:constructor 容易被修改,也不能跨iframe

Object.prototype.toString.call()

检测方法:Object.prototype.toString.call(xx)

优点:可检测所有的类型

缺点:IE6下,undefined 和 null 均为 Object

注意以下特殊情况:

Object.prototype.toString方法可以返回一个对象的数据类型,例如:

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

需要注意的是,Object.prototype.toString方法返回的是一个字符串,需要使用call方法来改变this指向。

Array.isArray方法

Array.isArray方法可以用来判断一个值是否是数组类型,例如:

Array.isArray([]); // trueArray.isArray({}); // falseArray.isArray("hello"); // falseArray.isArray(123); // false

需要注意的是,Array.isArray方法只能用来判断数组类型,不能用来判断其他数据类型的类型。

总之,JavaScript中有多种方法可以用来判断数据类型,每种方法都有其特点和适用范围,需要根据不同的场景进行选择。

标签: #判断js类型的数据 #判断数据类型js #判断js数据类型的方式 #判断js数据类型的方式是什么 #js constructor判断数据类型