JavaScript學習總結(六)——JavaScript判斷數據類型總結

  最近作項目中遇到了一些關於javascript數據類型的判斷處理,上網找了一下資料,而且親自驗證了各類數據類型的判斷,在此作一個總結吧!javascript

1、JS中的數據類型

   1.數值型(Number):包括整數、浮點數。java

   2.布爾型(Boolean)數組

   3.字符串型(String)app

   4.對象(Object)函數

   5.數組(Array)測試

   6.空值(Null)spa

   7.未定義(Undefined)prototype

2、判斷一個變量的數據類型

1.數值型(number)

  比較經常使用的判斷方法是:code

1 function isNumber(val){
2      return typeof val === 'number';
3 }

  但有些狀況就不行,好比:對象

1 var a;
2 alert(isNumber(parseInt(a)));

  這裏彈出來的是true,以下圖所示:

  但實際上變量a是NaN,它是不能用於數值運算的。

  因此上面的函數能夠修改成:

1 function isNumber(val){
2      return typeof val === 'number' && isFinite(val);
3 }

修改了以後,彈出來的就是false,以下圖所示:

  順便介紹一下JavaScript isFinite() 函數,isFinite() 函數用於檢查其參數是不是無窮大,若是 number 是有限數字(或可轉換爲有限數字),那麼返回 true。不然,若是 number 是 NaN(非數字),或者是正、負無窮大的數,則返回 false

2.布爾型(boolean)

  布爾類型的判斷比較簡單,能夠用以下的方法進行判斷:

1 /*
2 判斷變量val是否是布爾類型
3 */
4 function isBooleanType(val) {
5     return typeof val ==="boolean";
6 }

測試代碼:

 1 <script type="text/javascript">
 2     /*
 3     判斷變量val是否是布爾類型
 4     */
 5     function isBooleanType(val) {
 6         return typeof val ==="boolean";
 7     }
 8     var a;
 9     var b = false;
10     alert("變量a是布爾類型的判斷結果是:"+isBooleanType(a));
11     alert("變量b是布爾類型的判斷結果是:"+isBooleanType(b));
12 </script>

運行結果:

  

3. 字符串(String)

  字符串類型的判斷比較簡單,能夠用以下的方法進行判斷:

1 /*
2 判斷變量是否是字符串類型
3 */
4 function isStringType(val) {
5     return typeof val === "string";
6 }

測試代碼:

 1 <script type="text/javascript">
 2     /*
 3     判斷變量是否是字符串類型
 4     */
 5     function isStringType(val) {
 6         return typeof val === "string";
 7     }
 8 
 9     var a;
10     var s = "strType";
11     alert("變量a是字符串類型的判斷結果是:"+isStringType(a));
12     alert("變量s是字符串類型的判斷結果是:"+isStringType(s));
13 </script>

運行結果:

4.未定義(Undefined)

  未定義的判斷比較簡單,能夠用以下的方法進行判斷:

1 /*
2 判斷變量是否是Undefined
3 */
4 function isUndefined(val) {
5     return typeof val === "undefined";
6 }

測試代碼:

 1 <script type="text/javascript">
 2     var a;//a是undefined
 3     var s = "strType";
 4     /*
 5     判斷變量是否是Undefined
 6     */
 7     function isUndefined(val) {
 8         return typeof val === "undefined";
 9     }
10     alert("變量a是Undefined的判斷結果是:"+isUndefined(a));
11     alert("變量s是Undefined的判斷結果是:"+isUndefined(s));
12 </script>

運行結果:

5.對象(Object)

  因爲當變量是空值Null時,typeof也會返回object,因此Object不能直接用 typeof 判斷。

應該這樣:

1 function isObj(str){
2     if(str === null || typeof str === 'undefined'){
3         return false;
4     }
5     return typeof str === 'object';
6 }

測試代碼:

 1 <script type="text/javascript">
 2     /*
 3     判斷變量是否是Object類型
 4     */
 5     function isObj(str){
 6          if(str === null || typeof str === 'undefined'){
 7              return false;
 8          }
 9          return typeof str === 'object';
10     }
11 
12     var a;
13     var b = null;
14     var c = "str";
15     var d = {};
16     var e = new Object();
17 
18     alert("b的值是null,typeof b ==='object'的判斷結果是:"+(typeof b ==='object'));
19     alert("變量a是Object類型的判斷結果是:"+isObj(a));//false
20     alert("變量b是Object類型的判斷結果是:"+isObj(b));//false
21     alert("變量c是Object類型的判斷結果是:"+isObj(c));//false
22     alert("變量d是Object類型的判斷結果是:"+isObj(d));//true
23     alert("變量e是Object類型的判斷結果是:"+isObj(e));//true
24 </script>

運行結果:

6.空值(Null)

  判斷空值用 val === null 便可

1 function isNull(val){
2       return  val === null;
3 }

測試代碼:

 1 /*
 2 判斷變量是否是null
 3 */
 4 function isNull(val){
 5      return  val === null;
 6 }
 7 /*測試變量*/
 8 var a;
 9 var b = null;
10 var c = "str";
11 //彈出運行結果
12 alert("變量a是null的判斷結果是:"+isNull(a));//false
13 alert("變量b是null類型的判斷結果是:"+isNull(b));//true
14 alert("變量c是null類型的判斷結果是:"+isNull(c));//false

運行結果:

7.組(Array

  數組類型不可用typeof來判斷。因爲當變量是數組類型是,typeof會返回object

  這裏有兩種方法判斷數組類型:

 1 /*判斷變量arr是否是數組
 2 方法一
 3 */
 4 function isArray1(arr) {
 5     return Object.prototype.toString.apply(arr) === '[object Array]';
 6 }
 7 
 8 /*判斷變量arr是否是數組
 9 方法二
10 */
11 function isArray2(arr) {
12     if(arr === null || typeof arr === 'undefined'){
13         return false;
14     }
15     return arr.constructor === Array;
16 }

測試代碼:

 1 <script type="text/javascript">
 2 /*判斷變量arr是否是數組
 3 方法一
 4 */
 5 function isArray1(arr) {
 6     return Object.prototype.toString.apply(arr) === '[object Array]';
 7 }
 8 /*判斷變量arr是否是數組
 9 方法二
10 */
11 function isArray2(arr) {
12     if(arr === null || typeof arr === 'undefined'){
13         return false;
14     }
15     return arr.constructor === Array;
16 }
17 //測試變量
18 var a = null;
19 var b = "";
20 var c ;
21 var arr1 = [1,2,3];
22 var arr2 = new Array();
23 //打印測試結果
24 document.write("arr1變量是數組類型,typeof arr1 === 'object'的結果是:"+(typeof arr1 === 'object'));
25 document.write("<br/>");
26 document.write("------------------------------------------------------------------------------------------------");
27 document.write("<br/>");
28 document.write("使用isArray1方法判斷結果以下:");
29 document.write("<br/>");
30 document.write("------------------------------------------------------------------------------------------------");
31 document.write("<br/>");
32 document.write("變量a是數組類型的判斷結果是:"+isArray1(a));
33 document.write("<br/>");
34 document.write("變量b是數組類型的判斷結果是:"+isArray1(b));
35 document.write("<br/>");
36 document.write("變量c是數組類型的判斷結果是:"+isArray1(c));
37 document.write("<br/>");
38 document.write("變量arr1是數組類型的判斷結果是:"+isArray1(arr1));
39 document.write("<br/>");
40 document.write("變量arr2是數組類型的判斷結果是:"+isArray1(arr2));
41 document.write("<br/>");
42 document.write("------------------------------------------------------------------------------------------------");
43 document.write("<br/>");
44 document.write("使用isArray2方法判斷結果以下:");
45 document.write("<br/>");
46 document.write("------------------------------------------------------------------------------------------------");
47 document.write("<br/>");
48 document.write("變量a是數組類型的判斷結果是:"+isArray2(a));
49 document.write("<br/>");
50 document.write("變量b是數組類型的判斷結果是:"+isArray2(b));
51 document.write("<br/>");
52 document.write("變量c是數組類型的判斷結果是:"+isArray2(c));
53 document.write("<br/>");
54 document.write("變量arr1是數組類型的判斷結果是:"+isArray2(arr1));
55 document.write("<br/>");
56 document.write("變量arr2是數組類型的判斷結果是:"+isArray2(arr2));
57 document.write("<br/>");
58 </script>

運行結果:

  

相關文章
相關標籤/搜索