JavaScript判斷變量是否為數(shù)組的方法(Array)
今天小編給大家整理些關(guān)于javascript判斷變量是否是數(shù)組(Array)的相關(guān)知識,主要通過以下四點給大家展開話題,具體內(nèi)容如下所示:
1. typeof真的那么厲害嗎??
//首先看代碼 var ary = [1,23,4]; console.log(typeof ary); //輸出結(jié)果是Object
上面的辦法并不能實時的檢測出是否是數(shù)組,只能判斷其類型,所以說typeof判斷基本類型數(shù)據(jù)還是挺好的,但是不能準(zhǔn)確測試出是否是數(shù)組(typeof的具體用法以后提及,現(xiàn)在回歸正題)
2.instanceof 判斷
var ary = [1,23,4]; console.log(ary instanceof Array)//true;
從輸出的效果來看,還是挺令人滿意的,能準(zhǔn)確的檢測出數(shù)據(jù)類型是否是數(shù)組,不要高興的太早,大家先想想這個的缺點,我們接著說第三種方法
3.原型鏈方法
var ary = [1,23,4]; console.log(ary.__proto__.constructor==Array);//true console.log(ary.constructor==Array)//true 這兩段代碼是一樣的
這個辦法開起來好高大上哦~~,利用了原型鏈的方法,但是但是,這個是有兼容的哦,在IE早期版本里面__proto__是沒有定義的哦~而且,這個仍然有局限性,我們現(xiàn)在就來總結(jié)一下第2種方法和第3種方法局限性
總結(jié)一下第2種方法和第3種方法局限性
instanceof 和constructor 判斷的變量,必須在當(dāng)前頁面聲明的,比如,一個頁面(父頁面)有一個框架,框架中引用了一個頁面(子頁面),在子頁面中聲明了一個ary,并將其賦值給父頁面的一個變量,這時判斷該變量,Array == object.constructor;會返回false;
原因:
1、array屬于引用型數(shù)據(jù),在傳遞過程中,僅僅是引用地址的傳遞。
2、每個頁面的Array原生對象所引用的地址是不一樣的,在子頁面聲明的array,所對應(yīng)的構(gòu)造函數(shù),是子頁面的Array對象;父頁面來進(jìn)行判斷,使用的Array并不等于子頁面的Array;切記,不然很難跟蹤問題!
4.通用的方法
var ary = [1,23,4]; function isArray(o){ return Object.prototype.toString.call(o)=='[object Array]'; } console.log(isArray(ary));
具體Object.prototype.toString 的用法,請參照 Object.prototype.toString的用法
好了關(guān)于JavaScript判斷變量是否為數(shù)組的方法(Array)就給大家介紹這么多,今天主要給大家總結(jié)了這四種,本文寫的不好還請各位大俠多多指教,謝謝!
- JS判斷數(shù)組里是否有重復(fù)元素的方法小結(jié)
- JS 判斷某變量是否為某數(shù)組中的一個值的3種方法(總結(jié))
- JavaScript判斷數(shù)組是否包含指定元素的方法
- JS判斷元素是否在數(shù)組內(nèi)的實現(xiàn)代碼
- JS判斷數(shù)組中是否有重復(fù)值得三種實用方法
- js判斷數(shù)據(jù)類型如判斷是否為數(shù)組是否為字符串等等
- js判斷數(shù)組是否包含某個字符串變量的實例
- js判斷是否為數(shù)組的函數(shù): isArray()
- JavaScript判斷數(shù)組重復(fù)內(nèi)容的兩種方法(推薦)
- JavaScript判斷數(shù)組的方法總結(jié)與推薦
相關(guān)文章
JavaScript實現(xiàn)簡易放大鏡最全代碼解析(ES5)
這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)簡易放大鏡最全代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09Locate a File Using a File Open Dialog Box
Locate a File Using a File Open Dialog Box...2007-06-06JavaScript遍歷實現(xiàn)DFS算法和BFS算法
DFS(Depth?first?search)稱作「深度優(yōu)先遍歷」,BFS(Breadth?first?search)稱作「廣度優(yōu)先遍歷」。本文將通過JavaScript遍歷實現(xiàn)這兩種算法,需要的可以參考一下2023-01-01