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

2021-08-17 19:09:48 字數 1490 閱讀 2548

判斷變數的型別是最經常使用的方法,但是判斷的方式有很多。

1.typeof

var ary = [1,2,3,4];

console.log(typeof ary); // 輸出『object』

很明顯,typeof只能檢測基本資料型別,並不能檢測出來是否為陣列。

2.instanceof

var ary = [1,2,3,4];

console.log(ary instanceof array); //輸出true

看起來挺好使的,實際上也確實挺好使的,但是要求變數必須在當前頁面宣告。

3.原型鏈

var ary = [1,2,3,4];

console.log(ary.__proto__.constructor==array); //輸出true

console.log(ary.constructor==array) //輸出true

兩種方法都一樣,但是在ie中「_proto_」沒有定義。這種方法也存在和「instanceof」一樣的問題,必須先宣告變數。

4.完美方法

var arr = [1,2,3,4];

console.log(object.prototype.tostring.call(arr)) //輸出"[object array]"

為了使用簡便,我們可以封裝成乙個函式。

var ary = [1,2,3,4];

function isarray(o)

console.log(isarray(ary));

當然,這種方法不僅僅可以用來判斷是否為陣列,其他的也同樣適用。

console.log(object.prototype.tostring.call(123)) //[object number]

console.log(object.prototype.tostring.call('123')) //[object string]

console.log(object.prototype.tostring.call(undefined)) //[object undefined]

console.log(object.prototype.tostring.call(true)) //[object boolean]

console.log(object.prototype.tostring.call({})) //[object object]

console.log(object.prototype.tostring.call()) //[object array]

console.log(object.prototype.tostring.call(function(){})) //[object function]

是不是看起來既高大上,有特別好用呢!!!

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判斷變數的型別為陣列型別

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

js判斷是否為陣列

var array 1,2,3 console.log array instanceof array 父子頁面陣列賦值,可能無效 console.log array.constructor array 父子頁面陣列賦值,可能無效 console.log array.proto constructor...