登陆 注册

用JS写一个测试数据类型的函数

守望者 2020-03-20 325人围观 ,发现0个评论 javascript

        说到用测试JS中的数据类型,大家可能会想到typeof, tostring等函数,然后,这些函数单独使用都有一定的局限性

下面综合以上两种函数写一种实用性更广的测试JS数据类型的函数:


   在进行正式函数解析前,我们要先有一个基本认识,那就是,JS里面的数据类型可以是基本数据类型(如数值型,布尔型,字符串型),也可以是引用型数据类型(如对象,数组,函数)


函数解析:


   当我们往函数testTypeOf传入一个变量o时,


第一步: 

    要判断的就是o是否是null或者undefined

在前两种情况都排除的情况下,我们才可以用typeOf做进一步的判断,

否则,如果直接用typeOf判断并且传入的变量o恰好是null或者undefined,那么就会报错

当typeof =="object"时候,进入第二步,否则函数到这里就结束了


第二步:

    此时typeof =="object" 表明o是一个对象,这里o可能是一个普通的对象,

也可能是一个数组,所以我们用Object自带的函数tostring来做进一步判断(对象或者数组)

并对得到的信息字符串做必要的裁剪以得到我们想要得到的信息部分

如果是对象,我们将得到对象的名字

然而,如果对象是自定义的对象,那么我们只能得到“object”信息


第三步:

    如果以上情况都不是,那我们就 return“don`t know(不知道了)”了


函数代码如下,可以测试一下:


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>test</title>
    <script>

// 测试数据类型
function testTypeOf(o){
          
            if(o===null){ return "null"; }
           else if(o===undefined){ return "undefined";}
           if(typeof o=="number"){return "number";}
           else if(typeof o=="boolean"){return "boolean";}
           else if(typeof o=="string"){return "string";}
           else if(typeof o=="function"){return "function";}
          else if(typeof o=="object"){
                   var s = Object.prototype.toString.apply(o);
                   var arr = s.split(" ");
                   var l = arr[1];
                   l = l.substring(0,l.length-1);
                
                   return l;
               }

           return "dont know";
       }

       try{
           
           var a = [1,2];
           var b = new Date();
           var c = 12;
           var d = "number";
           var e = 1<2;
            var f = 6;
//          document.write(a+"<br />");
            document.write(testTypeOf(b));
        }
        catch(e){
             alert(e.name+e.message);
        }
     

    </script>
</head>

<body>

</body>
</html>


    转载请附上本文链接:https://tufeng.xyz/javascript/22.html,谢谢合作!

请发表您的评论
请关注微信公众号
微信二维码