今天小編給大家整理些關於j**ascript判斷變數是否是陣列(array)的相關知識,主要通過以下四點給大家展開話題,具體內容如下所示:
1. typeof真的那麼厲害嗎??
//首先看**
var ary = [1,23,4];
console.log(typeof ary); //輸出結果是object
上面的辦法並不能實時的檢測出是否是陣列,只能判斷其型別,所以說typeof判斷基本型別資料還是挺好的,但是不能準確測試出是否是陣列(typeof的具體用法以後提及,現在回歸正題)
2.instanceof 判斷
var ary = [1,23,4];
console.log(ary instanceof array) //true;
從輸出的效果來看,還是挺令人滿意的,能準確的檢測出資料型別是否是陣列,不要高興的太早,大家先想想這個的缺點,我們接著說第三種方法
3.原型鏈方法
var ary = [1,23,4];
console.log(ary.__proto__.constructor==array); //true
console.log(ary.constructor==array) //true 這兩段**是一樣的
這個辦法開起來好高大上哦~~,利用了原型鏈的方法,但是但是,這個是有相容的哦,在ie早期版本裡面__proto__是沒有定義的哦~而且,這個仍然有侷限性,我們現在就來總結一下第2種方法和第3種方法侷限性
總結一下第2種方法和第3種方法侷限性
instanceof 和constructor 判斷的變數,必須在當前頁面宣告的,比如,乙個頁面(父頁面)有乙個框架,框架中引用了乙個頁面(子頁面),在子頁面中宣告了乙個ary,並將其賦值給父頁面的乙個變數,這時判斷該變數,array == object.constructor;會返回false;
原因:
1、array屬於引用型資料,在傳遞過程中,僅僅是引用位址的傳遞。
2、每個頁面的array原生物件所引用的位址是不一樣的,在子頁面宣告的array,所對應的建構函式,是子頁面的array物件;父頁面來進行判斷,使用的array並不等於子頁面的array;切記,不然很難跟蹤問題!
4.通用的方法
var ary = [1,23,4];
function isarray(o)
console.log(isarray(ary));
具體object.prototype.tostring 的用法,請參照 object.prototype.tostring的用法 js判斷乙個變數是否為陣列
var ary 1,23,4 console.log ary.proto constructor array true console.log ary.constructor array true 這兩段 是一樣的有侷限性 var ary 1,23,4 console.log ary instanc...
判斷乙個變數是否為陣列
1 var array new array 1 2 3 4 5 console.log array instanceof array true 2 var array new array 1 2 3 4 5 console.log array.constructor array true 3 fun...
js 如何判斷乙個變數是否為空
核心在 if 條件,括號前面取反,這樣做的目的 整潔,不用每個或條件都加取反,括號裡面如果有乙個滿足,返回true,取反就是false,也就是說如果判斷的值為空為true,取反就為false,所以不執行if條件,百試不爽!這是我自用的,歡迎補充!通過和未通過的顏色 let checkcolor if...