標籤: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判斷資料類型總結