js-封装一个函数,准确判断数据类型

文章介绍了一种使用`Object.prototype.toString.call()`方法封装函数来精确判断JavaScript中各种数据类型的方法,包括对象、数组、数字、字符串、undefined、null、函数、Symbol等,避免了其他方法可能存在的一些场景不适应的问题。
摘要由CSDN通过智能技术生成

js-封装一个函数,准确判断数据类型

学习过JS的童鞋都知道,在判断数据类型的过程有很多方法。
typeof
instanceof
等,但是多多少少都有bug (有些场景不适合用)。
最有用的是toString方法。(Object.prototype.toString.call()) 最准确了,包括一些特殊的数据类型。
下面直接粘贴了封装后的函数,准确判断数据类型。

<!-- 封装一个函数,判断数据类型 -->
    <script>
        function typeofData(data) {
            let type = Object.prototype.toString.call(data);
            switch (type) {
                case "[object Object]":
                    return "object";
                case "[object Array]":
                    return "array";
                case "[object Number]":
                    return "number";
                case "[object String]":
                    return "string";
                case "[object Undefined]":
                    return "undefined";
                case "[object Null]":
                    return "null";
                case "[object Function]":
                    return "function";
                case "[object Symbol]":
                    return "symbol";

                default:
                    return "wrong input";
            }
        };
        let a = 1;
        let b = {};
        let c = [];
        let str = new String("");
        let str2 = "";
        let foo = function() {};
        let sym = Symbol();
        console.log(typeofData(a));
        console.log(typeofData(b));
        console.log(typeofData(c));
        console.log(typeofData(str));
        console.log(typeofData(str2));
        console.log(typeofData(foo));
        console.log(typeofData(sym));
        console.log(typeofData(null));
        console.log(typeofData(undefined));
        console.log(typeofData(NaN));
        /*
                     number
数据类型的判断.html:66 object
数据类型的判断.html:67 array
数据类型的判断.html:68 string
数据类型的判断.html:69 string
数据类型的判断.html:70 function
数据类型的判断.html:71 symbol
数据类型的判断.html:72 null
数据类型的判断.html:73 undefined
数据类型的判断.html:74 number
        
        
        */
    </script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值