js 資料型別 js中檢測資料型別的方法彙總

2021-10-11 11:37:07 字數 2061 閱讀 6061

回顧一下js中資料型別分為兩大類,基礎型別和引用資料型別,主要有:

基本資料型別

複雜資料型別

檢測js中的資料型別常用的方法有:

typeof

instanceof

object.prototype.tostring

對比一下這三種方法的優缺點:

typeof 5 // number 有效typeof 'dsd' // string 有效typeof true // boolean 有效typeof undefined // undefined 有效typeof function(){} // function 有效typeof null // object 無效typeof  // object 無效typeof {} // object 無效
從以上例子中可以看到:

note:這在需要對資料結構進行詳細劃分的時候就不適用,比如說你要明確區分陣列和物件,然後進行處理的時候,typeof就完全達不到效果

好處:檢測快捷方便

壞處:不能檢測更為準確的資料型別,如array、object、null

mdn: 用於檢測建構函式的 prototype 屬性是否出現在某個例項物件的原型鏈上。

instanceof array; // true{} instanceof object; // truenewdate() instanceof date; // truefunction person(){};newperson() instanceof person; // true instanceof object; // truenewdate() instanceof object; // truenewperson instanceof object; // true
由上面例子可以看出:

模擬instanceof的檢測過程

instanceof (a, b) =     return false;}
instanceof 只能用來判斷兩個物件是否屬於例項關係, 而不能判斷乙個物件例項具體屬於哪種型別。

由此可見instanceof在有些場景下依然不能滿足檢測具體型別的需求。

tostring是object的原型方法。呼叫該方法預設返回當前物件的[[class]]

這是乙個內部屬性,其格式為 [object ***] ,其中 *** 就是物件的型別。

object.prototype.tostring.call(5)         // "[object number]"object.prototype.tostring.call('str')     // "[object string]"object.prototype.tostring.call(true)      // "[object boolean]"object.prototype.tostring.call(undefined)  // "[object undefined]"object.prototype.tostring.call(null)       // "[object null]"object.prototype.tostring.call(function(){})   // "[object function]"object.prototype.tostring.call()         // "[object array]"object.prototype.tostring.call({})         // "[object object]"
由上可見tostring檢測各資料型別算非常準確了,基本上覆蓋了我們常用的資料型別

所以是判斷資料型別最常用的方法。

這裡利用tostring寫乙個檢測資料型別的方法

function checkdatatype(value)
同時,array物件提供isarray方法來檢測資料是否為陣列物件

array.isarray([1,2,4]) // truearray.isarray() // false
該方法用來檢測陣列型別也是非常方便的。

js檢測資料型別

要檢測乙個變數是不是基本資料型別?typeof 操作符是最佳的工具。說得更具體一 點,typeof 操作符是確定乙個變數是字串 數值 布林值,還是undefined 的最佳工具。如果變 量的值是乙個物件或null,則typeof 操作符會像下面例子中所示的那樣返回 object var s nich...

JS資料型別檢測

在js的日常使用中,經常需要檢測資料的型別,現在,就來看一下,js有哪些方法可以檢測資料的型別。typeof操作符返回乙個字串,表示未經計算的運算元的型別。typeof是js原生提供用來檢測型別的api,然而,並沒有什麼用。為什麼呢?因為,typeof不能準確地檢測出我們所想要知道的資料的型別。ty...

JS 資料型別檢測

tpeof val 用來檢測資料型別的運算子。基於typeof檢測出來的結果 首先是乙個字串 字串中是對應的型別 侷限性 typeof null object 但是null並不是物件 基於typeof 無法細分出當前值是普通物件還是陣列物件等,只要是物件型別,返回結果都是 object typeof...