JavaScript判斷資料類型總結

來源:互聯網
上載者:User

標籤:bms   pup   cat   fhs   bic   ios   mwl   plm   crp   

一、JS中的資料類型

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

   2.布爾型(Boolean)

   3.字串型(String)

   4.對象(Object)

   5.數組(Array)

   6.空值(Null)

   7.未定義(Undefined)

二、判斷一個變數的資料類型1.數值型(number)

  比較常用的判斷方法是:

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 判斷變數是不是Undefined3 */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));//false20     alert("變數b是Object類型的判斷結果是:"+isObj(b));//false21     alert("變數c是Object類型的判斷結果是:"+isObj(c));//false22     alert("變數d是Object類型的判斷結果是:"+isObj(d));//true23     alert("變數e是Object類型的判斷結果是:"+isObj(e));//true24 </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));//false13 alert("變數b是null類型的判斷結果是:"+isNull(b));//true14 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>

運行結果:

  

轉:http://www.cnblogs.com/xdp-gacl/p/3490065.html

(轉)JavaScript判斷資料類型總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.