javascript
浅玩JavaScript的数据类型判断
前言
平常在需要進行類型判斷時,隨手拿起typeof就像手槍一樣只管突突突...也沒有仔細的去了解它的具體特性。
所以這里就利用空閑時間,來做一個較為詳細的了解。
首先我們來全面看一遍typeof類型的檢測情況:
這里我給一組比較詳細的數據類型變量:
下面我們用typeof分別來檢測這些變量的數據類型,看看具體的返回結果:
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 通過以上測試,可以很肯定的說typeof最多只可檢查5種數據類型:??string,number,boolean,underfined,object??。
實際上JavaScript也只有這5種數據類型。
像Date、Array、Function、HTMLElement、Math、RegExp這些數據,在JavaScript中,他們都是Object對象的再次包裝,所以用typeof檢測它們就會返回 object 類型。
但是在實際的運用中,如果將 Date、Array、Function、HTMLElement、Math、RegExp 都作為object類型看待,就很不切實際。
幸運的是,我們可以從這些對象的構造函數(constructor)上獲得到代表它們具體的含義的信息。
例如:?
a.constructor.toString() -- > "function Array() { [native code] }";所以通過結合typeof、Object.constructor 這兩種方法,自己編寫了一個檢測類型的方法:
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 } 另外對于typeof在使用上還有一個小技巧。用typeof檢測一個不存在“變量”的數據類型時,并不會報錯,而是返回undefined。
而在以前,對與不確定的代碼,我們都是通過try{}catch(e){...} 進行嘗試運行的。
最后在查閱typeof的資料時。順便也簡單的看了下 instanceof 運算符的介紹。
總的來說,instanceof運算符是用于“檢測左側參數是否是右側參數的一個實例”。如果是,則返回true,否則返回false。
示例:
在這個示例中因為p是構造函數的person的一個實例,所以通過instanceof運算符得到的就是true。
這一點,可以在?p.constructor == 'function person(){}' ?得到應征。
再稍微復雜的還有:
?
---------------- 好了... 睡覺去.... --------- 明天繼續奮斗!!!! ---------------
轉載于:https://www.cnblogs.com/HCJJ/p/6032236.html
總結
以上是生活随笔為你收集整理的浅玩JavaScript的数据类型判断的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python学习之if语句
- 下一篇: XML系列之--解析电文格式的XML(二