js基礎--數據類型檢測的相關知識

歡迎訪問個人我的博客: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

instanceof是用來檢測引用類型,檢測是那種類型的實例。

他的返回值爲Boolean值,真爲true,不然爲false。

不能檢測null,會報錯。

// 這種檢測方式通常不經常使用
[1, 2] instanceof Array  //true

({a: 1}) instanceof Object  //true

(function(){}) instanceof Function  //true

四、Constructor

返回結果爲構造器,也能夠檢測自定義類型;

可是不適用於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(obj)

這種方式是最權威的,也是不少框架插件中用到的方法,推薦使用;

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

相關文章
相關標籤/搜索