js判斷變數的型別為陣列型別

2021-08-26 17:52:57 字數 1513 閱讀 6244

js的陣列是無型別的:陣列元素可以是任意型別,並且同乙個陣列中的不同元素也可能有不同的型別。陣列的元素可以是物件或其他陣列,這樣就可以建立複雜的資料結構。通常我們可以用一元運算子typeof來判斷js的資料型別,但是對於陣列這樣乙個特殊的物件卻只能返回"object"。

typeof可以解決大部分的資料型別判斷,是乙個一元運算,放在乙個運算值之前,其返回值為乙個字串,該字串說明運算數的型別,所以判斷某個是否為string型別,可以直接 if(typeof(你的值) == "string"){}。

接下來看一些例子:

除了前四個型別外,null、物件、陣列返回的都是object型別;對於函式型別返回的則是function,再比如typeof(date),typeof(eval)等。接下來進入正題,js判斷陣列型別的方法 ;

方法一: instanceof

instanceof 用於判斷乙個變數是否某個物件的例項,左邊運算元是乙個物件,右邊運算元是乙個函式物件或者函式構造器。原理是通過判斷左運算元的物件的原型鏈上是否具有右運算元的建構函式的prototype屬性。

a instanceof b?alert("true"):alert("false")  //注意b值是你想要判斷的那種資料型別,不是乙個字串,比如array。

舉乙個例子:

方法二之 constructor

在w3c定義中的定義:constructor 屬性返回對建立此物件的陣列函式的引用,就是返回物件相對應的建構函式。從定義上來說跟instanceof不太一致,但效果都是一樣的。

那麼判斷各種型別的方法:

注意:使用instaceof和construcor,被判斷的array必須是在當前頁面宣告的!比如,乙個頁面(父頁面)有乙個框架,框架中引用了乙個頁面(子頁面),在子頁面中宣告了乙個array,並將其賦值給父頁面的乙個變數,這時判斷該變數,array ==object.constructor;會返回false;

原因:1、array屬於引用型資料,在傳遞過程中,僅僅是引用位址的傳遞。

2、每個頁面的array原生物件所引用的位址是不一樣的,在子頁面宣告的array,所對應的建構函式,是子頁面的array物件;父頁面來進行判斷,使用的array並不等於子頁面的array。

方法三最簡單的方法object.prototype.tostring.call(arr) === 「[object array]」

js判斷變數型別是否為陣列

判斷變數的型別是最經常使用的方法,但是判斷的方式有很多。1.typeof var ary 1,2,3,4 console.log typeof ary 輸出 object 很明顯,typeof只能檢測基本資料型別,並不能檢測出來是否為陣列。2.instanceof var ary 1,2,3,4 c...

js判斷變數型別是否為陣列

判斷變數的型別是最經常使用的方法,但是判斷的方式有很多。1.typeof var ary 1,2,3,4 console.log typeof ary 輸出 object 很明顯,typeof只能檢測基本資料型別,並不能檢測出來是否為陣列。2.instanceof var ary 1,2,3,4 c...

js判斷型別 陣列為例

1.typeof真的那麼厲害嗎?首先看 var ary 1,23,4 console.log typeof ary 輸出結果是object 上面的辦法並不能實時的檢測出是否是陣列,只能判斷其型別,所以說typeof判斷基本型別資料還是挺好的,但是不能準確測試出是否是陣列 typeof的具體用法以後提...