JavaScript知識點總結(六)之JavaScript判斷變量數據類型
最近做了一個項目,其中有關于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判斷變量數據類型的相關知識,希望對大家有所幫助,如果大家想了解更多內容敬請關注腳本之家網站!
相關文章
JavaScript實現一個多少秒后自動跳轉的頁面(案例代碼)
最近遇到這樣一個需求是用js簡單實現一個多少秒后自動跳轉的頁面,實現代碼非常簡單,對js自動跳轉頁面相關知識感興趣的朋友一起看看吧2023-01-01深入理解關于javascript中apply()和call()方法的區(qū)別
下面小編就為大家?guī)硪黄钊肜斫怅P于javascript中apply()和call()方法的區(qū)別。小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-04-04ie與firefox下的event使用說明與詳細區(qū)別
event是ie自帶的一個對象,而ff中不存在該對象,只能通過傳遞參數(并且惟一)的方式來實現event.2009-10-10微信小程序-圖片、錄音、音頻播放、音樂播放、視頻、文件代碼實例
本篇文章主要介紹了微信小程序-圖片、錄音、音頻播放、音樂播放、視屏、文件代碼實例,有興趣的可以了解一下。2016-11-11js中的bigint類型轉化為json字符串時報無法序列化的問題
JSON序列化指將JSON對象轉換為JSON字符串,J實現方式有兩種:一種是調用JSON對象內置的stringify()函數,一種是為對象自定義toJSON()函數,本文重點介紹js中的bigint類型轉化為json字符串時報無法序列化的問題,感興趣的朋友一起看看吧2024-01-01