最近做了一個項目,其中有關于js判斷數據類型的處理,在網上搜了相關資料,并且親自測試了各種數據類型的判斷,絕對安全。下面小編把具體內容總結分享給大家,大家參考下!
一、JS中的數據類型
1.數值型(Number):包括整數、浮點數。
2.布爾型(Boolean)
3.字符串型(String)
4.對象(Object)
5.數組(Array)
6.空值(Null)
7.未定義(Undefined)
二、判斷一個變量的數據類型
1.數值型(number)
比較常用的判斷方法是:
function isNumber(val){return typeof val === 'number';}
但有些情況就不行,比如:
var a;alert(isNumber(parseInt(a)));
這里彈出來的是true,如下圖所示:
但實際上變量a是NaN,它是不能用于數值運算的。
所以上面的函數可以修改為:
function isNumber(val){return typeof val === 'number' && isFinite(val);}
修改了之后,彈出來的就是false,如下圖所示:
順便介紹一下JavaScript isFinite() 函數,isFinite() 函數用于檢查其參數是否是無窮大,如果 number 是有限數字(或可轉換為有限數字),那么返回 true。否則,如果 number 是 NaN(非數字),或者是正、負無窮大的數,則返回 false。
2.布爾型(boolean)
布爾類型的判斷比較簡單,可以用如下的方法進行判斷:
/*判斷變量val是不是布爾類型*/function isBooleanType(val) {return typeof val ==="boolean";}
測試代碼:
<script type="text/javascript">/*判斷變量val是不是布爾類型*/function isBooleanType(val) {return typeof val ==="boolean";}var a;var b = false;alert("變量a是布爾類型的判斷結果是:"+isBooleanType(a));alert("變量b是布爾類型的判斷結果是:"+isBooleanType(b));</script>
運行結果:
3. 字符串(String)
字符串類型的判斷比較簡單,可以用如下的方法進行判斷:
/*判斷變量是不是字符串類型*/function isStringType(val) {return typeof val === "string";}
測試代碼:
<script type="text/javascript">/*判斷變量是不是字符串類型*/function isStringType(val) {return typeof val === "string";}var a;var s = "strType";alert("變量a是字符串類型的判斷結果是:"+isStringType(a));alert("變量s是字符串類型的判斷結果是:"+isStringType(s));</script>
運行結果:
4.未定義(Undefined)
未定義的判斷比較簡單,可以用如下的方法進行判斷:
/*判斷變量是不是Undefined*/function isUndefined(val) {return typeof val === "undefined";}
測試代碼:
<script type="text/javascript">var a;//a是undefinedvar s = "strType";/*判斷變量是不是Undefined*/function isUndefined(val) {return typeof val === "undefined";}alert("變量a是Undefined的判斷結果是:"+isUndefined(a));alert("變量s是Undefined的判斷結果是:"+isUndefined(s));</script>
運行結果:
5.對象(Object)
由于當變量是空值Null時,typeof也會返回object,所以Object不能直接用 typeof 判斷。
應該這樣:
function isObj(str){if(str === null || typeof str === 'undefined'){return false;}return typeof str === 'object';}
測試代碼:
<script type="text/javascript">/*判斷變量是不是Object類型*/function isObj(str){if(str === null || typeof str === 'undefined'){return false;}return typeof str === 'object';}var a;var b = null;var c = "str";var d = {};var e = new Object();alert("b的值是null,typeof b ==='object'的判斷結果是:"+(typeof b ==='object'));alert("變量a是Object類型的判斷結果是:"+isObj(a));//falsealert("變量b是Object類型的判斷結果是:"+isObj(b));//falsealert("變量c是Object類型的判斷結果是:"+isObj(c));//falsealert("變量d是Object類型的判斷結果是:"+isObj(d));//truealert("變量e是Object類型的判斷結果是:"+isObj(e));//true</script>
運行結果:
6.空值(Null)
判斷空值用 val === null 即可
function isNull(val){return val === null;}
測試代碼:
/*判斷變量是不是null*/function isNull(val){return val === null;}/*測試變量*/var a;var b = null;var c = "str";//彈出運行結果alert("變量a是null的判斷結果是:"+isNull(a));//falsealert("變量b是null類型的判斷結果是:"+isNull(b));//truealert("變量c是null類型的判斷結果是:"+isNull(c));//false
運行結果:
7.數組(Array)
數組類型不可用typeof來判斷。因為當變量是數組類型是,typeof會返回object。
這里有兩種方法判斷數組類型:
/*判斷變量arr是不是數組方法一*/function isArray(arr) {return Object.prototype.toString.apply(arr) === '[object Array]';}/*判斷變量arr是不是數組方法二*/function isArray(arr) {if(arr === null || typeof arr === 'undefined'){return false;}return arr.constructor === Array;}
測試代碼:
<script type="text/javascript">/*判斷變量arr是不是數組方法一*/function isArray(arr) {return Object.prototype.toString.apply(arr) === '[object Array]';}/*判斷變量arr是不是數組方法二*/function isArray(arr) {if(arr === null || typeof arr === 'undefined'){return false;}return arr.constructor === Array;}//測試變量var a = null;var b = "";var c ;var arr = [,,];var arr = new Array();//打印測試結果document.write("arr變量是數組類型,typeof arr === 'object'的結果是:"+(typeof arr === 'object'));document.write("<br/>");document.write("------------------------------------------------------------------------------------------------");document.write("<br/>");document.write("使用isArray方法判斷結果如下:");document.write("<br/>");document.write("------------------------------------------------------------------------------------------------");document.write("<br/>");document.write("變量a是數組類型的判斷結果是:"+isArray(a));document.write("<br/>");document.write("變量b是數組類型的判斷結果是:"+isArray(b));document.write("<br/>");document.write("變量c是數組類型的判斷結果是:"+isArray(c));document.write("<br/>");document.write("變量arr是數組類型的判斷結果是:"+isArray(arr));document.write("<br/>");document.write("變量arr是數組類型的判斷結果是:"+isArray(arr));document.write("<br/>");document.write("------------------------------------------------------------------------------------------------");document.write("<br/>");document.write("使用isArray方法判斷結果如下:");document.write("<br/>");document.write("------------------------------------------------------------------------------------------------");document.write("<br/>");document.write("變量a是數組類型的判斷結果是:"+isArray(a));document.write("<br/>");document.write("變量b是數組類型的判斷結果是:"+isArray(b));document.write("<br/>");document.write("變量c是數組類型的判斷結果是:"+isArray(c));document.write("<br/>");document.write("變量arr是數組類型的判斷結果是:"+isArray(arr));document.write("<br/>");document.write("變量arr是數組類型的判斷結果是:"+isArray(arr));document.write("<br/>");</script>
運行結果:
以上內容是小編給大家介紹的JavaScript知識點總結(六)之JavaScript判斷變量數據類型的相關知識,希望對大家有所幫助,如果大家想了解更多內容敬請關注武林網網站!
新聞熱點
疑難解答