最近做了一個項目,其中有關於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是undefined var 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));//false alert("變量b是Object類型的判斷結果是:"+isObj(b));//false alert("變量c是Object類型的判斷結果是:"+isObj(c));//false alert("變量d是Object類型的判斷結果是:"+isObj(d));//true alert("變量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));//false alert("變量b是null類型的判斷結果是:"+isNull(b));//true alert("變量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判斷變量數據類型的相關知識,希望對大家有所幫助,如果大家想了解更多內容敬請關注網站!