摘要:日常工作中经常会有判断数据类型的需求,这里简单介绍下我平时判断数据类型的几种方式。当使用检测基本类型时,会始终返回操作符确实解决了类型判断的问题,但还是有一些不足之处。此外,只能返回,并不能直接返回数据的类型。
1. typeof操作符JavaScript中有5种基本数据类型:undefined,String,Boolean,Number,Null,以及一种复杂数据类型Object。日常工作中经常会有判断数据类型的需求,这里简单介绍下我平时判断数据类型的几种方式。
语法
typeof variable
对一个值使用typeof会返回如下字符串
"undefined" 这个值未定义
"string" 这个值是字符串
"object" 这个值是对象或者null
"function" 这个值是函数
"number" 这个值是数值
"boolean" 这个值是布尔值
example:
var a; console.log(typeof a) // "undefined" var b = 123; console.log(typeof b) // "number"
2. instanceof操作符typeof是一个操作符,并不是作为全局对象的一个方法存在的,所以尽管可以像typeof(123)这样调用,但圆括号并不是必须的。
当我们检测的数据类型是基本类型的时候,typeof能很好的满足我们的需求,但在检测引用类型的时候就显得有些力不从心了,通常我们并不是想知道某个值是对象,而是想知道它是什么类型的对象。因此,JavaScript提供了instanceof操作符。
语法
result = variable instanceof constructor
如果这个值是给定引用类型的实例,那么instanceof操作符就会返回true,否则会返回false。
example:
var obj = {}; console.log(obj instanceof Object); //true console.log(obj instanceof RegExp); //false
当使用instanceof检测基本类型时,会始终返回false
3. Object.prototype.toString.call(data)instanceof操作符确实解决了类型判断的问题,但还是有一些不足之处。由于instanceof是根据数值原型链来识别数据类型的,但是JS中所有引用类型都是Object的实例,因此在检测一个引用类型的值与Object时,会始终返回true。此外,instanceof只能返回true/false,并不能直接返回数据的类型。因此,这里给大家介绍一种更直观的检测方式。
调用Object.prototypeto.String.call(data)会返回一个字符串,如
Object.prototype.toString.call(123) // "[object Number]" Object.prototype.toString.call("123") // "[object String]" Object.prototype.toString.call([123]) // "[object Array]" Object.prototype.toString.call(/123/) // "[object RegExp]"
是不是很直观呢,为了方便使用,还可以做一些简单的处理,进一步的封装为一个函数,来供我们在开发中使用。
function checkType(data) { return {}.toString.call(data).match(/[A-Z]w+/)[0] }; console.log(checkType(123)) // "Number" console.log(checkType([123])) // "Array" console.log(checkType(/123/)) // "RegExp" console.log(checkType(null)) // "Null"4.小结
关于我在js中判断数据类型的方式,就到这里了。如果有什么其它的建议,欢迎指点,让大家互相交流,互相学习,一起进步!最后,祝大家节日快乐!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/88818.html
摘要:本文将讲解我目前所知道的判断数据类型的方法。数据类型一共有种除了之外的种属于原始数据类型。等价于问题四的返回值是什么答案。 本文将讲解我目前所知道的判断JavaScript数据类型的方法。JavaScript数据类型一共有7种: Undefined Null Boolean String Symbol Number Object 除了Object之外的6种属于原始数据类型。有时,我...
摘要:除和外,所有的数据类型都是可以转化为对象,而如果是对象,就肯定有构造函数。特性因为和没有构造函数,因此不能用此方法来判断。由于同一条原型继承链上的各个对象的构造函数都不一样,因此,此方法可以区分开继承链上的各个自定义数据类型。 typeof 用法示例 var arr = []; typeof arr; //object typeof(arr); //object typeo...
摘要:对象类型常见的有,,,正则新增自己提供的乐行判断如果不对对象做严格区分使用。的实现使用了原型继承的表示左表达式,表示右表达式,它是用是否等于来判断对象的类型的。常见框架和库的实数据类型判断测试这里将的实现原理抽取出来,用原生实现。 JavaScript一共有六种数据类型,分为原始类型(又名基本类型)和对象类型(又名引用类型) 原始类型有五种,分别为number,string,boole...
摘要:注意基本变量类型不是对象类型,只有基本包装类型才是对象类型。至于显示的原型,在里用属性表示,这个是原型继承的基础知识,在这里就不在叙述了。 前言 如果你要开发一个复杂的产品,那么肯定少不了使用面向对象机制,当然也避不开 Javascript 里面的继承,instanceof 运算符是原生 Javascript 语言中用来判断实例继承的操作符。所以我们有必要深入理解该运算符! inst...
摘要:比如我们今天要讨论的,在当中如何判断一个数组是数组。在数组的原型链上也能找到构造函数由上面的几行代码可以看出,使用运算符可以分辨数组和对象,可以判断数组是数组。用判断实例化的数组拥有一个属性,这个属性指向生成这个数组的方法。 如果你没有注意过这个问题,那么这个标题应该会让你感到困惑,判断数据类型这么基础的问题能有什么坑呢? 少年,你不能太天真了,我们朝夕面对的这门语言,可是JavaSc...
阅读 1566·2021-09-26 09:46
阅读 2637·2021-09-07 09:59
阅读 2733·2021-09-07 09:59
阅读 1829·2019-08-30 14:20
阅读 906·2019-08-26 13:39
阅读 3120·2019-08-26 12:24
阅读 752·2019-08-26 11:55
阅读 1201·2019-08-23 16:49