JavaScript知識(shí)點(diǎn)總結(jié)(六)之JavaScript判斷變量數(shù)據(jù)類型
最近做了一個(gè)項(xiàng)目,其中有關(guān)于js判斷數(shù)據(jù)類型的處理,在網(wǎng)上搜了相關(guān)資料,并且親自測(cè)試了各種數(shù)據(jù)類型的判斷,絕對(duì)安全。下面小編把具體內(nèi)容總結(jié)分享給大家,大家參考下!
一、JS中的數(shù)據(jù)類型
1.數(shù)值型(Number):包括整數(shù)、浮點(diǎn)數(shù)。
2.布爾型(Boolean)
3.字符串型(String)
4.對(duì)象(Object)
5.數(shù)組(Array)
6.空值(Null)
7.未定義(Undefined)
二、判斷一個(gè)變量的數(shù)據(jù)類型
1.數(shù)值型(number)
比較常用的判斷方法是:
function isNumber(val){ return typeof val === 'number'; }
但有些情況就不行,比如:
var a; alert(isNumber(parseInt(a)));
這里彈出來(lái)的是true,如下圖所示:
但實(shí)際上變量a是NaN,它是不能用于數(shù)值運(yùn)算的。
所以上面的函數(shù)可以修改為:
function isNumber(val){ return typeof val === 'number' && isFinite(val); }
修改了之后,彈出來(lái)的就是false,如下圖所示:
順便介紹一下JavaScript isFinite() 函數(shù),isFinite() 函數(shù)用于檢查其參數(shù)是否是無(wú)窮大,如果 number 是有限數(shù)字(或可轉(zhuǎn)換為有限數(shù)字),那么返回 true。否則,如果 number 是 NaN(非數(shù)字),或者是正、負(fù)無(wú)窮大的數(shù),則返回 false。
2.布爾型(boolean)
布爾類型的判斷比較簡(jiǎn)單,可以用如下的方法進(jìn)行判斷:
/* 判斷變量val是不是布爾類型 */ function isBooleanType(val) { return typeof val ==="boolean"; }
測(cè)試代碼:
<script type="text/javascript"> /* 判斷變量val是不是布爾類型 */ function isBooleanType(val) { return typeof val ==="boolean"; } var a; var b = false; alert("變量a是布爾類型的判斷結(jié)果是:"+isBooleanType(a)); alert("變量b是布爾類型的判斷結(jié)果是:"+isBooleanType(b)); </script>
運(yùn)行結(jié)果:
3. 字符串(String)
字符串類型的判斷比較簡(jiǎn)單,可以用如下的方法進(jìn)行判斷:
/* 判斷變量是不是字符串類型 */ function isStringType(val) { return typeof val === "string"; }
測(cè)試代碼:
<script type="text/javascript"> /* 判斷變量是不是字符串類型 */ function isStringType(val) { return typeof val === "string"; } var a; var s = "strType"; alert("變量a是字符串類型的判斷結(jié)果是:"+isStringType(a)); alert("變量s是字符串類型的判斷結(jié)果是:"+isStringType(s)); </script>
運(yùn)行結(jié)果:
4.未定義(Undefined)
未定義的判斷比較簡(jiǎn)單,可以用如下的方法進(jìn)行判斷:
/* 判斷變量是不是Undefined */ function isUndefined(val) { return typeof val === "undefined"; }
測(cè)試代碼:
<script type="text/javascript"> var a;//a是undefined var s = "strType"; /* 判斷變量是不是Undefined */ function isUndefined(val) { return typeof val === "undefined"; } alert("變量a是Undefined的判斷結(jié)果是:"+isUndefined(a)); alert("變量s是Undefined的判斷結(jié)果是:"+isUndefined(s)); </script>
運(yùn)行結(jié)果:
5.對(duì)象(Object)
由于當(dāng)變量是空值Null時(shí),typeof也會(huì)返回object,所以O(shè)bject不能直接用 typeof 判斷。
應(yīng)該這樣:
function isObj(str){ if(str === null || typeof str === 'undefined'){ return false; } return typeof str === 'object'; }
測(cè)試代碼:
<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'的判斷結(jié)果是:"+(typeof b ==='object')); alert("變量a是Object類型的判斷結(jié)果是:"+isObj(a));//false alert("變量b是Object類型的判斷結(jié)果是:"+isObj(b));//false alert("變量c是Object類型的判斷結(jié)果是:"+isObj(c));//false alert("變量d是Object類型的判斷結(jié)果是:"+isObj(d));//true alert("變量e是Object類型的判斷結(jié)果是:"+isObj(e));//true </script>
運(yùn)行結(jié)果:
6.空值(Null)
判斷空值用 val === null 即可
function isNull(val){ return val === null; }
測(cè)試代碼:
/* 判斷變量是不是null */ function isNull(val){ return val === null; } /*測(cè)試變量*/ var a; var b = null; var c = "str"; //彈出運(yùn)行結(jié)果 alert("變量a是null的判斷結(jié)果是:"+isNull(a));//false alert("變量b是null類型的判斷結(jié)果是:"+isNull(b));//true alert("變量c是null類型的判斷結(jié)果是:"+isNull(c));//false
運(yùn)行結(jié)果:
7.數(shù)組(Array)
數(shù)組類型不可用typeof來(lái)判斷。因?yàn)楫?dāng)變量是數(shù)組類型是,typeof會(huì)返回object。
這里有兩種方法判斷數(shù)組類型:
/*判斷變量arr是不是數(shù)組 方法一 */ function isArray(arr) { return Object.prototype.toString.apply(arr) === '[object Array]'; } /*判斷變量arr是不是數(shù)組 方法二 */ function isArray(arr) { if(arr === null || typeof arr === 'undefined'){ return false; } return arr.constructor === Array; }
測(cè)試代碼:
<script type="text/javascript"> /*判斷變量arr是不是數(shù)組 方法一 */ function isArray(arr) { return Object.prototype.toString.apply(arr) === '[object Array]'; } /*判斷變量arr是不是數(shù)組 方法二 */ function isArray(arr) { if(arr === null || typeof arr === 'undefined'){ return false; } return arr.constructor === Array; } //測(cè)試變量 var a = null; var b = ""; var c ; var arr = [,,]; var arr = new Array(); //打印測(cè)試結(jié)果 document.write("arr變量是數(shù)組類型,typeof arr === 'object'的結(jié)果是:"+(typeof arr === 'object')); document.write("<br/>"); document.write("------------------------------------------------------------------------------------------------"); document.write("<br/>"); document.write("使用isArray方法判斷結(jié)果如下:"); document.write("<br/>"); document.write("------------------------------------------------------------------------------------------------"); document.write("<br/>"); document.write("變量a是數(shù)組類型的判斷結(jié)果是:"+isArray(a)); document.write("<br/>"); document.write("變量b是數(shù)組類型的判斷結(jié)果是:"+isArray(b)); document.write("<br/>"); document.write("變量c是數(shù)組類型的判斷結(jié)果是:"+isArray(c)); document.write("<br/>"); document.write("變量arr是數(shù)組類型的判斷結(jié)果是:"+isArray(arr)); document.write("<br/>"); document.write("變量arr是數(shù)組類型的判斷結(jié)果是:"+isArray(arr)); document.write("<br/>"); document.write("------------------------------------------------------------------------------------------------"); document.write("<br/>"); document.write("使用isArray方法判斷結(jié)果如下:"); document.write("<br/>"); document.write("------------------------------------------------------------------------------------------------"); document.write("<br/>"); document.write("變量a是數(shù)組類型的判斷結(jié)果是:"+isArray(a)); document.write("<br/>"); document.write("變量b是數(shù)組類型的判斷結(jié)果是:"+isArray(b)); document.write("<br/>"); document.write("變量c是數(shù)組類型的判斷結(jié)果是:"+isArray(c)); document.write("<br/>"); document.write("變量arr是數(shù)組類型的判斷結(jié)果是:"+isArray(arr)); document.write("<br/>"); document.write("變量arr是數(shù)組類型的判斷結(jié)果是:"+isArray(arr)); document.write("<br/>"); </script>
運(yùn)行結(jié)果:
以上內(nèi)容是小編給大家介紹的JavaScript知識(shí)點(diǎn)總結(jié)(六)之JavaScript判斷變量數(shù)據(jù)類型的相關(guān)知識(shí),希望對(duì)大家有所幫助,如果大家想了解更多內(nèi)容敬請(qǐng)關(guān)注腳本之家網(wǎng)站!
相關(guān)文章
iframe窗口高度自適應(yīng)的又一個(gè)巧妙實(shí)現(xiàn)思路
這篇文章主要介紹了實(shí)現(xiàn)iframe窗口高度自適應(yīng)的又一個(gè)巧妙思路,需要的朋友可以參考下2014-04-04layui 實(shí)現(xiàn)二級(jí)彈窗彈出之后 關(guān)閉一級(jí)彈窗的方法
今天小編就為大家分享一篇layui 實(shí)現(xiàn)二級(jí)彈窗彈出之后 關(guān)閉一級(jí)彈窗的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09JavaScript實(shí)現(xiàn)一個(gè)多少秒后自動(dòng)跳轉(zhuǎn)的頁(yè)面(案例代碼)
最近遇到這樣一個(gè)需求是用js簡(jiǎn)單實(shí)現(xiàn)一個(gè)多少秒后自動(dòng)跳轉(zhuǎn)的頁(yè)面,實(shí)現(xiàn)代碼非常簡(jiǎn)單,對(duì)js自動(dòng)跳轉(zhuǎn)頁(yè)面相關(guān)知識(shí)感興趣的朋友一起看看吧2023-01-01深入理解關(guān)于javascript中apply()和call()方法的區(qū)別
下面小編就為大家?guī)?lái)一篇深入理解關(guān)于javascript中apply()和call()方法的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-04-04ie與firefox下的event使用說(shuō)明與詳細(xì)區(qū)別
event是ie自帶的一個(gè)對(duì)象,而ff中不存在該對(duì)象,只能通過(guò)傳遞參數(shù)(并且惟一)的方式來(lái)實(shí)現(xiàn)event.2009-10-10利用Webpack實(shí)現(xiàn)小程序多項(xiàng)目管理的方法
這篇文章主要介紹了利用Webpack實(shí)現(xiàn)小程序多項(xiàng)目管理的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02微信小程序-圖片、錄音、音頻播放、音樂播放、視頻、文件代碼實(shí)例
本篇文章主要介紹了微信小程序-圖片、錄音、音頻播放、音樂播放、視屏、文件代碼實(shí)例,有興趣的可以了解一下。2016-11-11js中的bigint類型轉(zhuǎn)化為json字符串時(shí)報(bào)無(wú)法序列化的問(wèn)題
JSON序列化指將JSON對(duì)象轉(zhuǎn)換為JSON字符串,J實(shí)現(xiàn)方式有兩種:一種是調(diào)用JSON對(duì)象內(nèi)置的stringify()函數(shù),一種是為對(duì)象自定義toJSON()函數(shù),本文重點(diǎn)介紹js中的bigint類型轉(zhuǎn)化為json字符串時(shí)報(bào)無(wú)法序列化的問(wèn)題,感興趣的朋友一起看看吧2024-01-01使用Mock.js生成前端測(cè)試數(shù)據(jù)
這篇文章主要介紹了使用Mock.js生成前端測(cè)試數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12