成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

javascript 判斷變量是否是數(shù)組(Array)

lyning / 953人閱讀

摘要:過(guò)完春節(jié)又有好多人尋找新的機(jī)會(huì),旁邊的人面試完就會(huì)分享一些問(wèn)題,明明會(huì)的但是面試的時(shí)候,想不全,面試官不滿(mǎn)意這個(gè)懊惱的行為,今天的文章跟大家分享下如何判斷便是是數(shù)組。

過(guò)完春節(jié)又有好多人尋找新的機(jī)會(huì),旁邊的人面試完就會(huì)分享一些問(wèn)題,明明會(huì)的但是面試的時(shí)候,想不全,面試官不滿(mǎn)意...這個(gè)懊惱的行為,今天的文章跟大家分享下:javascript如何判斷便是是數(shù)組。

1. typeof真的那么厲害嗎??

//首先看代碼
var ary = [1,23,4];
console.log(typeof ary); //輸出結(jié)果是Object

上面的辦法并不能實(shí)時(shí)的檢測(cè)出是否是數(shù)組,只能判斷其類(lèi)型,所以說(shuō)typeof判斷基本類(lèi)型數(shù)據(jù)還是挺好的,但是不能準(zhǔn)確測(cè)試出是否是數(shù)組(typeof的具體用法以后提及,現(xiàn)在回歸正題)
2.instanceof 判斷

var ary = [1,23,4];
console.log(ary instanceof Array)//true;

從輸出的效果來(lái)看,還是挺令人滿(mǎn)意的,能準(zhǔn)確的檢測(cè)出數(shù)據(jù)類(lèi)型是否是數(shù)組,不要高興的太早,大家先想想這個(gè)的缺點(diǎn),我們接著說(shuō)第三種方法
3.原型鏈方法

var ary = [1,23,4];
console.log(ary.__proto__.constructor==Array);//true
console.log(ary.constructor==Array)//true 這兩段代碼是一樣的

這個(gè)辦法開(kāi)起來(lái)好高大上哦~~,利用了原型鏈的方法,但是但是,這個(gè)是有兼容的哦,在IE早期版本里面__proto__
是沒(méi)有定義的哦~而且,這個(gè)仍然有局限性,我們現(xiàn)在就來(lái)總結(jié)一下第2種方法和第3種方法局限性

總結(jié)一下第2種方法和第3種方法局限性
instanceof 和constructor 判斷的變量,必須在當(dāng)前頁(yè)面聲明的,比如,一個(gè)頁(yè)面(父頁(yè)面)有一個(gè)框架,框架中引用了一個(gè)頁(yè)面(子頁(yè)面),在子頁(yè)面中聲明了一個(gè)ary,并將其賦值給父頁(yè)面的一個(gè)變量,這時(shí)判斷該變量,Array == object.constructor;會(huì)返回false;
原因:
1、array屬于引用型數(shù)據(jù),在傳遞過(guò)程中,僅僅是引用地址的傳遞。
2、每個(gè)頁(yè)面的Array原生對(duì)象所引用的地址是不一樣的,在子頁(yè)面聲明的array,所對(duì)應(yīng)的構(gòu)造函數(shù),是子頁(yè)面的Array對(duì)象;父頁(yè)面來(lái)進(jìn)行判斷,使用的Array并不等于子頁(yè)面的Array;切記,不然很難跟蹤問(wèn)題!

4.通用的方法

var ary = [1,23,4];
function isArray(o){
    return Object.prototype.toString.call(o)=="[object Array]";
}
console.log(isArray(ary));

具體Object.prototype.toString 的用法,請(qǐng)參照Object.prototype.toString的用法

今天總結(jié)這四種,算是三種吧,typeof是為了引出后面的instanceof,當(dāng)然總結(jié)這四種也是參考了網(wǎng)上的一些意見(jiàn),如果不妥之處,請(qǐng)多指正~~希望和各位多多交流~

5、追加一種新的方法 Array.isArray(arg);
因?yàn)槭切绿砑拥?,在不支持的瀏覽器上可能有兼容性,用的時(shí)候需要兼容下不支持的瀏覽器,這個(gè)時(shí)候就要結(jié)合第4中方法了

if(!Array.isArray){
    Array.isArray = function(arg){
        return Object.prototype.toString.call(arg)==="[object Array]"
    }

}

而且此方法可以支持iframe判斷是否是數(shù)組,其實(shí)是第四中的變形

再多的方法也需要擼碼來(lái)加強(qiáng)用法和經(jīng)驗(yàn),前端們趕緊擼碼記憶吧....

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78720.html

相關(guān)文章

  • javascript 判斷變量數(shù)組Array

    摘要:過(guò)完春節(jié)又有好多人尋找新的機(jī)會(huì),旁邊的人面試完就會(huì)分享一些問(wèn)題,明明會(huì)的但是面試的時(shí)候,想不全,面試官不滿(mǎn)意這個(gè)懊惱的行為,今天的文章跟大家分享下如何判斷便是是數(shù)組。 過(guò)完春節(jié)又有好多人尋找新的機(jī)會(huì),旁邊的人面試完就會(huì)分享一些問(wèn)題,明明會(huì)的但是面試的時(shí)候,想不全,面試官不滿(mǎn)意...這個(gè)懊惱的行為,今天的文章跟大家分享下:javascript如何判斷便是是數(shù)組。 1. typeof真的那...

    RayKr 評(píng)論0 收藏0
  • javascript 判斷變量數(shù)組Array

    摘要:過(guò)完春節(jié)又有好多人尋找新的機(jī)會(huì),旁邊的人面試完就會(huì)分享一些問(wèn)題,明明會(huì)的但是面試的時(shí)候,想不全,面試官不滿(mǎn)意這個(gè)懊惱的行為,今天的文章跟大家分享下如何判斷便是是數(shù)組。 過(guò)完春節(jié)又有好多人尋找新的機(jī)會(huì),旁邊的人面試完就會(huì)分享一些問(wèn)題,明明會(huì)的但是面試的時(shí)候,想不全,面試官不滿(mǎn)意...這個(gè)懊惱的行為,今天的文章跟大家分享下:javascript如何判斷便是是數(shù)組。 1. typeof真的那...

    RichardXG 評(píng)論0 收藏0
  • js面試題(上)

    https://segmentfault.com/a/11... 原型 / 構(gòu)造函數(shù) / 實(shí)例 對(duì)原型的理解 我們知道在es6之前,js沒(méi)有類(lèi)和繼承的概念,js是通過(guò)原型來(lái)實(shí)現(xiàn)繼承的。在js中一個(gè)構(gòu)造函數(shù)默認(rèn)自帶有一個(gè)prototype屬性, 這個(gè)的屬性值是一個(gè)對(duì)象,同時(shí)這個(gè)prototype對(duì)象自帶有一個(gè)constructor屬性,這個(gè)屬性指向這個(gè)構(gòu)造函數(shù),同時(shí)每一個(gè)實(shí)例 都有一個(gè)__proto...

    leap_frog 評(píng)論0 收藏0
  • javascript基礎(chǔ)細(xì)節(jié)

    摘要:語(yǔ)法部分屬性默認(rèn)的就是,所以不必顯式指定為。不強(qiáng)制在每個(gè)語(yǔ)句結(jié)尾加,會(huì)自動(dòng)加分號(hào),但是在某些情況下會(huì)改變程序的語(yǔ)義,所以最好主動(dòng)加。實(shí)際上,默認(rèn)有一個(gè)全局對(duì)象。 語(yǔ)法部分: 1.type 屬性: 默認(rèn)的 type 就是 javascript, 所以不必顯式指定 type 為 javascript。2.javascript 不強(qiáng)制在每個(gè)語(yǔ)句結(jié)尾加 ; , javascript 會(huì)自...

    wangxinarhat 評(píng)論0 收藏0
  • JavaScript檢測(cè)原始值、引用值、屬性

    摘要:檢測(cè)函數(shù)從技術(shù)上講,中的函數(shù)是引用類(lèi)型,同樣存在構(gòu)造函數(shù),每個(gè)函數(shù)都是其實(shí)例,比如不好的寫(xiě)法然而,這個(gè)方法亦不能跨幀使用,因?yàn)槊總€(gè)幀都有各自的構(gòu)造函數(shù),好在運(yùn)算符也是可以用于函數(shù)的,返回。 上周寫(xiě)過(guò)一篇讀書(shū)筆記《編寫(xiě)可維護(hù)的JavaScript》之編程實(shí)踐,其中 第8章 避免『空比較』是博主在工作中遇坑較多的雷區(qū),所以特此把該章節(jié)重新整理分享,希望大家不再坑隊(duì)友(>﹏<)。 在 Jav...

    劉德剛 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<