JS如何判断数据类型

首先我们要清楚基本类型与引用类型分别是指什么。

基本类型:undefined、null、string、number、boolean、symbol(ES6)

引用类型:Object、Array、RegExp、Date、Function

1.typeof

typeof的返回值一共有七种,分别为"string","number","boolean",“object”,"function","undefined"以及ES6新增的"Symbol"。

 如果我们想用 typeof 来判断array,object,还有null类型的话返回的结果都为“object”类型,没办法判断该变量是数组、对象还是空类型。若需要判断array,object,null的话则可以用typeof封装一下

let getType = function (val) {
        if (val === null) {
            //判断该参数是否为空
            return 'null'
        } else if (typeof val === 'object') {
            //再次判断该参数是否有长度,若有则为数组类型,否则为对象
            if (typeof val.length === 'number') {
                return 'Array';
            } else {
                return 'Object'
            }
        } else {
            return '该参数不是array,object,null类型'
        }
    }

若觉得封装成函数麻烦的可以看下以下几种方法。

2.instanceof

let array = [1, 2, 3];
console.log(array instanceof Array); //true
let obj={};
console.log(obj instanceof Object);  // true

3.constructor

let array = [1,2,3,1];
console.log(array.constructor === Array); // true 

4、Object.prototype.toString

let array = [1, 2, 3];
let obj = {};

console.log(Object.prototype.toString.call(obj)); //[object Object]
console.log(Object.prototype.toString.call(array)); //[object Array]

这种方法的返回值是一个字符串类型,如果只希望返回值为数据类型,而不包含[object Array]前面的object的话,可以做以下封装

function getType(val) {
        let type = Object.prototype.toString.call(val);
        return console.log(type.slice(type.length / 2, type.length - 1));
    }
let array = [1, 2, 3];

getType(array)

该函数的返回值就仅仅是传入参数的数据类型了。

5.Array.isArray() 

好像这种方法只能用于判断数组类型

    let array = [1, 2, 3];
    console.log(Array.isArray(array)); //true

以上是我个人所得知的几种判断数据类型的几种方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值