JS資料型別檢測

2021-09-24 06:41:41 字數 2619 閱讀 7867

在js的日常使用中,經常需要檢測資料的型別,現在,就來看一下,js有哪些方法可以檢測資料的型別。

typeof操作符返回乙個字串,表示未經計算的運算元的型別。typeof是js原生提供用來檢測型別的api,然而,並沒有什麼用。

為什麼呢?

因為,typeof不能準確地檢測出我們所想要知道的資料的型別。

typeof在大部分情況下都會返回'object',如檢測array、function、null時。

typeof的唯一作用就是檢測變數是否已經被定義。

// 檢測變數 *** 是否被定義

typeof *** === 'undefined'

// 如果上面判斷返回 true,說明變數 *** 未定義或值為 undefined,這個方法用來避免referenceerror錯誤。

複製**

instanceof操作符用來檢測乙個物件的原型鏈上是否存在某個建構函式的prototype,一般是檢測被檢測物件的建構函式的prototype。

let obj = new

object()

obj instanceof objcet // true

let number = new

number(1)

number instanceof

number

// true

let arr =

arr instanceof

array

// true

複製**

instanceof有乙個缺陷:如果資料不是使用建構函式構造出來的,那麼結果就會出錯。比如:

let str = "asdfghjkl"

str instanceof

string

// false

複製**

所以,instanceof只有在檢測自定義的物件時才有用。

實際開發中,jser使用object.prototype.tostring()來檢測資料型別。

object.prototype.tostring()會返回被呼叫物件的乙個型別字串,如[object object]

var class2type = {} 

"boolean number string function array date regexp object error".split(" ").foreach(function(e,i))

function

_typeof(obj)

return

typeof obj === "object" || typeof obj === "function" ?

class2type[ object.prototype.tostring.call(obj) ] || "object" :

typeof obj

// 判斷 obj 是基本型別還是複雜型別,若是基本型別,直接返回 typeof obj

// 如果 obj 不是基本型別,使用 object.prototype.tostring.call(obj)檢測實際型別,若與預定型別匹配,則輸出預定型別,否則輸出 object

}複製**

/**

* gettype

* @description 返回給定引數的資料型別

* @param args 需要做型別檢測的引數

* @return args 的資料型別,如 string

*/function

gettype(args)

arguments = array.prototype.slice.call(arguments)

if(arguments.length === 0)

let class2type = {}

"number,string,boolean,object,array,function,date,regexp,error".split(',').foreach((value,index)=>]`] = value.tolowercase()

})arguments.map((param)=>else

if(typeof param === 'object' || typeof param === 'function')else

})return types

}// object.prototype.tostring() 會將引數的型別以如 [object object] 的形式列印出來。

// class2type物件中每一項的屬性名都對應乙個 tostrign 列印出來的值

// 將 param tostring 出來的值與 class2type 進行匹配,就能知曉 param 的型別。

複製**

js檢測資料型別

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

JS 資料型別檢測

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

js檢測資料型別

一 js中資料型別 二 判斷資料型別 下面將對如下資料進行判斷它們的型別 var bool true var num 1 var str abc var und undefined var nul null var arr 1,2,3 var obj var fun function 1.使用typ...