判断数据类型的几种办法
事情是这样的,有一段程序调不出来,然后需要看一下返回数据的类型。我以前最常用的就是typeof的方法判断。结果判断出来时object,嘿嘿嘿,这就奇怪了。因为typeof的object可能是数组,可能是一段json数据。造成了数据没办法区分。这个时候我想到了jquery中有对数据类型的判断,但是自己一直没有使用过,所以去百度搜索找了一下,果然找的了,那就是$.type()的方法。
$.type()这个方法是能区分数据类型的。数组的话,就会返回array,函数就会返回function,如果是一个json对象,才会返回object。其他的类型也是没有问题的,但是我突然想到了,jquery是封装的js,那么是不是js这种也有这种能判断具体数据类型的方法呢,嘿嘿嘿,还真有。那就是tostring.call()
这个方法就能准确的判断出数据的具体类型,但是他的返回值和原来的稍稍不同。例如数组的话,他就是返回[object Array],为了能直观的看到输出数据,复制下面的代码到编辑器,然后运行就能看出来效果。
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 </body> 9 <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> 10 <script type="text/javascript"> 11 var a = 12345; 12 var b = {}; 13 var c = []; 14 var d = function (){}; 15 var e = "嘿嘿嘿"; 16 var f = undefined; 17 var g = null; 18 console.log(typeof(a)); 19 console.log(typeof(b)); 20 console.log(typeof(c)); 21 console.log(typeof(d)); 22 console.log(typeof(e)); 23 console.log(typeof(f)); 24 console.log(typeof(g)); 25 console.log("11111111111111111111111111111111"); 26 console.log($.type(a)); 27 console.log($.type(b)); 28 console.log($.type(c)); 29 console.log($.type(d)); 30 console.log($.type(e)); 31 console.log($.type(f)); 32 console.log($.type(g)); 33 console.log("11111111111111111111111111111111"); 34 console.log(toString.call(a)); 35 console.log(toString.call(b)); 36 console.log(toString.call(c)); 37 console.log(toString.call(d)); 38 console.log(toString.call(e)); 39 console.log(toString.call(f)); 40 console.log(toString.call(g)); 41 console.log("11111111111111111111111111111111"); 42 </script> 43 </html>
这里还要复习一下,js的基本数据类型。包括:字符串、数字、布尔、数组、对象、Null、Undefined这七种数据类型,所以如果大家引入了jq,还是利用jq的方法判断出来的数据类型更准确。