js 判斷資料型別

2022-08-22 23:00:13 字數 2156 閱讀 3612

首先來提問乙個:typeof是否能正確判斷型別?

答案是:不可以,因為由於歷史原因,在判斷原始型別時,typeof null會等於object。而且對於物件來說,除了函式,都會轉換成object。例子如下:

typeof 1 //

'number'

typeof "1" //

'string'

typeof

null

//typeof //

'object'

typeof {} //

'object'

typeof window.alert //

'function'

再來提問乙個,instanceof是否能正確判斷型別?

答案是:還是不可以,雖然instanceof是通過原型鏈來判斷的,但是對於物件來說,array也會被轉換成object,而且也不能區分基本型別stringboolean。例如:

function

func() {}

const func = new

func()

console.log(func

instanceof func) //

true

const obj ={}

const arr =

obj

instanceof object //

true

arr instanceof object //

true

arr instanceof array //

true

const str = "abc"const str2 = new string("abc")

str

instanceof string //

false

str2 instanceof string //

true

所以該怎麼辦呢?這時候我們可以使用:object.prototype.tostring.call()因為每個物件都有乙個tostring()方法,當要將物件表示為文字值或以預期字串的方式引用物件時,會自動呼叫該方法。預設情況下,從object派生的每個物件都會繼承tostring()方法。如果此方法未在自定義物件中被覆蓋,tostring()返回[object type],其中type是物件型別。所以就有以下例子:

object.prototype.tostring.call(new date()) //

[object date]

object.prototype.tostring.call("1") //

[object string]

object.prototype.tostring.call(1) //

[object numer]

object.prototype.tostring.call(undefined) //

[object undefined]

object.prototype.tostring.call(null) //

[object null]

所以綜合上述知識點,我們可以封裝出以下通用型別判斷方法:

var type = function

(data) ;

使用方法如下:

type("a") //

string

type(1) //

number

type(window) //

window

type(document.queryselector("h1")) //

element

js判斷資料型別

1 typeof 形如 var x xx typeof x string 返回型別有 undefined string number boolean function object 缺點 對於object型別不能細分是什麼型別 優點 對空null的判斷 undefined 的應用 2 instanc...

js判斷資料型別

了解js的都知道,有個typeof 用來判斷各種資料型別,有兩種寫法 typeof typeof 如下例項 typeof 2 輸出 number typeof null 輸出 object typeof 輸出 object typeof 輸出 object typeof function 輸出 fu...

js判斷資料型別

1 判斷是否為陣列型別 2 判斷是否為字串型別 3 判斷是否為數值型別 isnan 變數 如果為true就是數字型別 注意這個函式一般針對數字型別來判斷是否值為nan,若變數為非數字型別,則先轉化為數字型別再做判斷,用此函式時,別忘考慮空串和空格 這倆轉化為數字是0 4 判斷是否為日期型別 5 判斷...