JavaScript判斷變數是否為數組的方法(Array)_javascript技巧

來源:互聯網
上載者:User

 今天小編給大家整理些關於javascript判斷變數是否是數組(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);//trueconsole.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){return Object.prototype.toString.call(o)=='[object Array]';}console.log(isArray(ary));

具體Object.prototype.toString 的用法,請參照 Object.prototype.toString的用法

好了關於JavaScript判斷變數是否為數組的方法(Array)就給大家介紹這麼多,今天主要給大家總結了這四種,本文寫的不好還請各位大俠多多指教,謝謝!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.