javascript
浅玩JavaScript的数据类型判断
前言
平常在需要進(jìn)行類型判斷時(shí),隨手拿起typeof就像手槍一樣只管突突突...也沒有仔細(xì)的去了解它的具體特性。
所以這里就利用空閑時(shí)間,來做一個(gè)較為詳細(xì)的了解。
首先我們來全面看一遍typeof類型的檢測(cè)情況:
這里我給一組比較詳細(xì)的數(shù)據(jù)類型變量:
下面我們用typeof分別來檢測(cè)這些變量的數(shù)據(jù)類型,看看具體的返回結(jié)果:
typeof s --> stringtypeof n --> numbertypeof b --> booleantypeof a --> objecttypeof o --> objecttypeof d --> objecttypeof u --> undefinedtypeof f --> functiontypeof w --> objecttypeof doc --> objecttypeof r --> objecttypeof m --> objecttypoef t --> functiontypeof _s --> numbertypoef _n --> objecttypeof _d --> objecttypeof _nan --> number 通過以上測(cè)試,可以很肯定的說typeof最多只可檢查5種數(shù)據(jù)類型:??string,number,boolean,underfined,object??。
實(shí)際上JavaScript也只有這5種數(shù)據(jù)類型。
像Date、Array、Function、HTMLElement、Math、RegExp這些數(shù)據(jù),在JavaScript中,他們都是Object對(duì)象的再次包裝,所以用typeof檢測(cè)它們就會(huì)返回 object 類型。
但是在實(shí)際的運(yùn)用中,如果將 Date、Array、Function、HTMLElement、Math、RegExp 都作為object類型看待,就很不切實(shí)際。
幸運(yùn)的是,我們可以從這些對(duì)象的構(gòu)造函數(shù)(constructor)上獲得到代表它們具體的含義的信息。
例如:?
a.constructor.toString() -- > "function Array() { [native code] }";所以通過結(jié)合typeof、Object.constructor 這兩種方法,自己編寫了一個(gè)檢測(cè)類型的方法:
1 function getType(){ 2 3 var value = arguments[0], 4 type = function(){ 5 return /\w+\s(\w+)\(\)\s.+?/.test(value.constructor.toString()) ? RegExp.$1.toLowerCase() : 'arguments except'; 6 }; 7 8 if(typeof value){ 9 return value !== null ? value !== undefined ? type() : 'undefined' : 'null'; 10 }else{ 11 return 'undefined'; 12 } 13 14 } 另外對(duì)于typeof在使用上還有一個(gè)小技巧。用typeof檢測(cè)一個(gè)不存在“變量”的數(shù)據(jù)類型時(shí),并不會(huì)報(bào)錯(cuò),而是返回undefined。
而在以前,對(duì)與不確定的代碼,我們都是通過try{}catch(e){...} 進(jìn)行嘗試運(yùn)行的。
最后在查閱typeof的資料時(shí)。順便也簡(jiǎn)單的看了下 instanceof 運(yùn)算符的介紹。
總的來說,instanceof運(yùn)算符是用于“檢測(cè)左側(cè)參數(shù)是否是右側(cè)參數(shù)的一個(gè)實(shí)例”。如果是,則返回true,否則返回false。
示例:
在這個(gè)示例中因?yàn)閜是構(gòu)造函數(shù)的person的一個(gè)實(shí)例,所以通過instanceof運(yùn)算符得到的就是true。
這一點(diǎn),可以在?p.constructor == 'function person(){}' ?得到應(yīng)征。
再稍微復(fù)雜的還有:
?
---------------- 好了... 睡覺去.... --------- 明天繼續(xù)奮斗!!!! ---------------
轉(zhuǎn)載于:https://www.cnblogs.com/HCJJ/p/6032236.html
總結(jié)
以上是生活随笔為你收集整理的浅玩JavaScript的数据类型判断的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python学习之if语句
- 下一篇: XML系列之--解析电文格式的XML(二