日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

浅玩JavaScript的数据类型判断

發布時間:2025/7/14 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅玩JavaScript的数据类型判断 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

平常在需要進行類型判斷時,隨手拿起typeof就像手槍一樣只管突突突...也沒有仔細的去了解它的具體特性。
所以這里就利用空閑時間,來做一個較為詳細的了解。

首先我們來全面看一遍typeof類型的檢測情況:

這里我給一組比較詳細的數據類型變量:

1 var s = new String('abc'), 2 n = 123, 3 b = true, 4 a = new Array(), 5 o = new Object(), 6 d = new Date(), 7 u = undefined, 8 f = function(){}, 9 w = window, 10 doc = document, 11 r = new RegExp(), 12 m = Math, 13 t = window.setTimeout, 14 _s = '123', 15 _n = null, 16 _d = document.body, 17 _nan = NaN;

下面我們用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
示例:

1 var p = new person(); 2 p instanceof person // --> true;

在這個示例中因為p是構造函數的person的一個實例,所以通過instanceof運算符得到的就是true。
這一點,可以在?p.constructor == 'function person(){}' ?得到應征。
再稍微復雜的還有:

1 function person(){} 2 function animal(){} 3 4 persion.prototype = new animal(); 5 var p = new person(); 6 p instanceof persion() //--> true 7 p instanceof animal() //--> true

?

---------------- 好了... 睡覺去.... --------- 明天繼續奮斗!!!! ---------------

轉載于:https://www.cnblogs.com/HCJJ/p/6032236.html

總結

以上是生活随笔為你收集整理的浅玩JavaScript的数据类型判断的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。