歡迎訪問個人我的博客:http://www.xiaolongwu.cngit
最近工做有點忙,好幾天都沒更新技術博客了。es6
週末起牀打開有道雲筆記,發現本身的博客todolist裏躺了一堆只有名字的文件。github
話很少說,咱們開幹,加油!數組
今天,咱們一塊兒學習一下js中的數據類型檢測相關的知識,也順便作個總結。框架
咱們都知道,在js中分爲基本數據類型和複雜數據類型。函數
基本數據類型又包括 Sting Number Boolean Null Undefined ,還有一個es6新增的Symbol,咱們這先不說。學習
複雜數據類型只有一種,那就是Object。.net
咱們平時見到的數組Array、正則RegExp、時間對象Date、函數Function等都屬於Object。prototype
這點想必你們都知道,可是我仍是要在這裏囉嗦一下。插件
判斷基本數據類型咱們能夠選擇typeof來判斷。
這裏須要注意就是返回值,他的返回值爲小寫字母開頭的字符串。
//字符串 typeof 'leon' // 'sting' //整數 typeof 22 // 'number' //undefined typeof undefined // 'undefined' //Boolean typeof true // 'boolean' //Null typeof null // 'object' 這爲何是object ? // 由於null表示的是一個空指針,指針表示的是引用型數據,因此返回object //Object typeof [1,2.3] //'object' typeof {a: 'ww'} //'object' typeof new Date() //'object' //function typeof function(){} //"function"
instanceof是用來檢測引用類型,檢測是那種類型的實例。
他的返回值爲Boolean值,真爲true,不然爲false。
不能檢測null,會報錯。
// 這種檢測方式通常不經常使用 [1, 2] instanceof Array //true ({a: 1}) instanceof Object //true (function(){}) instanceof Function //true
返回結果爲構造器,也能夠檢測自定義類型;
可是不適用於null和undefined。
'leon'.constructor == String // true (1234).constructor == Number // true (true).constructor == Boolean // true [1, 2].constructor == Array // true ({name:'leon'}).constructor == Object // true (function(){}).constructor == Function // true
檢測自定義類型
function Leon(){} var leon = new Leon(); leon.constructor == Leon; // true
這種方式是最權威的,也是不少框架插件中用到的方法,推薦使用;
Object.prototype.toString.call('leon'); //"[object String]" Object.prototype.toString.call(1234); //"[object Number]" Object.prototype.toString.call(true); //"[object Boolean]" Object.prototype.toString.call([1,2,3]); //"[object Array]" Object.prototype.toString.call({name:'leon'}); //"[object Object]" Object.prototype.toString.call(function(){}); //"[object Function]" Object.prototype.toString.call(null); //"[object Null]" Object.prototype.toString.call(undefined); //"[object Undefined]"
實際使用時,能夠這麼寫
var test = Object.prototype.toString.call('leon'); if(test == "[object String]") { console.log('這是個字符串') } //固然咱們也能夠選擇用正則去判斷第二個單詞,從而獲得數據的類型
github文章資源地址:js基礎--數據類型檢測的相關知識
個人CSDN博客地址:https://blog.csdn.net/wxl1555
若是您對個人博客內容有疑惑或質疑的地方,請在下方評論區留言,或郵件給我,共同窗習進步。
郵箱:wuxiaolong802@163.com