资讯专栏INFORMATION COLUMN

JavaScript数据类型判断

luckyyulin / 2683人阅读

摘要:日常工作中经常会有判断数据类型的需求,这里简单介绍下我平时判断数据类型的几种方式。当使用检测基本类型时,会始终返回操作符确实解决了类型判断的问题,但还是有一些不足之处。此外,只能返回,并不能直接返回数据的类型。

JavaScript中有5种基本数据类型:undefined,String,Boolean,Number,Null,以及一种复杂数据类型Object。日常工作中经常会有判断数据类型的需求,这里简单介绍下我平时判断数据类型的几种方式。

1. typeof操作符

语法

    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"

typeof是一个操作符,并不是作为全局对象的一个方法存在的,所以尽管可以像typeof(123)这样调用,但圆括号并不是必须的。

2. instanceof操作符

当我们检测的数据类型是基本类型的时候,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数据类型的方法。JavaScript数据类型一共有7种: Undefined Null Boolean String Symbol Number Object 除了Object之外的6种属于原始数据类型。有时,我...

    jackzou 评论0 收藏0
  • javascript如何判断变量的数据类型

    摘要:除和外,所有的数据类型都是可以转化为对象,而如果是对象,就肯定有构造函数。特性因为和没有构造函数,因此不能用此方法来判断。由于同一条原型继承链上的各个对象的构造函数都不一样,因此,此方法可以区分开继承链上的各个自定义数据类型。 typeof 用法示例 var arr = []; typeof arr; //object typeof(arr); //object typeo...

    曹金海 评论0 收藏0
  • javascript 数据类型判断 (常见库的数据类型判断源码的分析)

    摘要:对象类型常见的有,,,正则新增自己提供的乐行判断如果不对对象做严格区分使用。的实现使用了原型继承的表示左表达式,表示右表达式,它是用是否等于来判断对象的类型的。常见框架和库的实数据类型判断测试这里将的实现原理抽取出来,用原生实现。 JavaScript一共有六种数据类型,分为原始类型(又名基本类型)和对象类型(又名引用类型) 原始类型有五种,分别为number,string,boole...

    libin19890520 评论0 收藏0
  • JavaScript instanceof运算符深入分析

    摘要:注意基本变量类型不是对象类型,只有基本包装类型才是对象类型。至于显示的原型,在里用属性表示,这个是原型继承的基础知识,在这里就不在叙述了。 前言 如果你要开发一个复杂的产品,那么肯定少不了使用面向对象机制,当然也避不开 Javascript 里面的继承,instanceof 运算符是原生 Javascript 语言中用来判断实例继承的操作符。所以我们有必要深入理解该运算符! inst...

    zhangyucha0 评论0 收藏0
  • JavaScript中,如何判断数组是数组?

    摘要:比如我们今天要讨论的,在当中如何判断一个数组是数组。在数组的原型链上也能找到构造函数由上面的几行代码可以看出,使用运算符可以分辨数组和对象,可以判断数组是数组。用判断实例化的数组拥有一个属性,这个属性指向生成这个数组的方法。 如果你没有注意过这个问题,那么这个标题应该会让你感到困惑,判断数据类型这么基础的问题能有什么坑呢? 少年,你不能太天真了,我们朝夕面对的这门语言,可是JavaSc...

    kohoh_ 评论0 收藏0

发表评论

0条评论

luckyyulin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<