欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript數(shù)組的一些奇葩行為

 更新時(shí)間:2016年01月25日 11:12:17   作者:宇哥哥  
今天,復(fù)習(xí)了一下JavaScript的數(shù)組,然后,把他的一些奇葩行為總結(jié)了一下,分享在腳本之家平臺(tái),歡迎大家參考

在程序語言中數(shù)組的重要性不言而喻,JavaScript中數(shù)組也是最常使用的對(duì)象之一,數(shù)組是值的有序集合,由于弱類型的原因,JavaScript中數(shù)組十分靈活、強(qiáng)大,不像是Java等強(qiáng)類型高級(jí)語言數(shù)組只能存放同一類型或其子類型元素,JavaScript在同一個(gè)數(shù)組中可以存放多種類型的元素,而且是長(zhǎng)度也是可以動(dòng)態(tài)調(diào)整的,可以隨著數(shù)據(jù)增加或減少自動(dòng)對(duì)數(shù)組長(zhǎng)度做更改。

今天,復(fù)習(xí)了一下JavaScript的數(shù)組,然后,把他的一些奇葩行為總結(jié)了一下,在這里和大家share一下,如果有不對(duì)的地方,歡迎指出!

奇葩1:Array()構(gòu)造器函數(shù)可以不使用new關(guān)鍵字進(jìn)行調(diào)用:

Array()構(gòu)造器使用傳遞給他的參數(shù)作為數(shù)組的元素,從而創(chuàng)建數(shù)組,一般的,我們是如下調(diào)用的:

var a = new Array(1, 2, "bom!");
a.length; //3
console.log(a); //[1, 2, "bom!"] 

但是,省略掉new也是可以的,如下:

var a = Array(1, 2, "bom!");
a.length; //3
console.log(a); //[1, 2, "bom!"] 

雖然,我不知道他的內(nèi)部實(shí)現(xiàn)機(jī)制是什么,但是,猜想他的構(gòu)造器函數(shù)可能是如下定義的:

function Array(args) {
//如果,this不是Array的實(shí)例的話,
//說明不是通過new調(diào)用的,則在這里再重新調(diào)用
if( !this instanceof Array) {
return new Array(args);
}//后面是正常調(diào)用時(shí)的實(shí)現(xiàn)代碼
//...
}

奇葩2:當(dāng)只傳一個(gè)參數(shù)給構(gòu)造函數(shù)時(shí),行為莫測(cè)

如果只傳一個(gè)參數(shù),并且這個(gè)參數(shù)是一個(gè)整數(shù),將會(huì)得到一個(gè)數(shù)組,并且length等于這個(gè)參數(shù)

var a = new Array(12);
console.log(a.length); //12
console.log(a); //[] 

如果只傳一個(gè)浮點(diǎn)數(shù),就會(huì)報(bào)錯(cuò):

var a = new Array(1.1); //Uncaught RangeError: Invalid array length(…) 

傳遞一個(gè)字符串就會(huì)正常工作,并且該字符串作為數(shù)組的第一個(gè)元素:

var a = new Array("1.1");
console.log(a.length); //
console.log(a); //["1.1"] 

但是為了避免二義性,我建議最好是是直接使用字面量的形式創(chuàng)建數(shù)組:

var a = []; //空數(shù)組
var a = [1, 1, "bom"]; //三個(gè)元素
var a = [12]; //一個(gè)元素,并且元素是12 

奇葩3:數(shù)組的length屬性可以被修改(可寫)

如下,我們直接把本來是2的length改成了100,而且還修改成功了?。。?br />

var a = [1, 2, 3, 4];
console.log(a.length); //4
a.length = 100; 
console.log(a.length); //100 

雖然length等于100,但是,元素a[4]-a[99]是不存在的,并且如果你請(qǐng)求他們的值的話,例如,從0到a.length做一個(gè)循環(huán)中做的話,那么會(huì)得到undefined。

接下來再看:

var a = [1, 2, 3, 4];
a.length = 100;
console.log(a[10]); //undefined
console.log(99 in a); //false 

與下面的例子有點(diǎn)相似:

var a = [1, 2, 3, 4];
a[99] = undefined;
console.log(a.length); //100 

不同之處在于,這里的a[99]存在了,因?yàn)槲覀儎?chuàng)建了它,即使他擁有的是undefined的值。但是從a[4]到a[98]的所有元素則是不存在的,如下:

var a = [1, 2, 3, 4];
a[99] = undefined;
console.log(99 in a); //true;
console.log(98 in a); //false
console.log(a.length); //100 

以上所述給大家分享了JavaScript數(shù)組的一些奇葩行為,文章寫的不好還請(qǐng)見諒,謝謝!

相關(guān)文章

  • uni-app配置APP自定義頂部標(biāo)題欄設(shè)置方法與注意事項(xiàng)

    uni-app配置APP自定義頂部標(biāo)題欄設(shè)置方法與注意事項(xiàng)

    相信很多小伙伴在使用uniapp進(jìn)行多端開發(fā)的時(shí)候,在面對(duì)一些業(yè)務(wù)需求的時(shí)候,uniapp給我們提供的默認(rèn)導(dǎo)航欄已經(jīng)不能滿足我們的業(yè)務(wù)需求了,這篇文章主要給大家介紹了關(guān)于uni-app配置APP自定義頂部標(biāo)題欄設(shè)置方法與注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • JavaScript寫個(gè)貪吃蛇小游戲(超詳細(xì))

    JavaScript寫個(gè)貪吃蛇小游戲(超詳細(xì))

    這篇文章主要介紹了JavaScript寫個(gè)貪吃蛇小游戲(超詳細(xì)),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • javascript用戶注冊(cè)提示效果的簡(jiǎn)單實(shí)例

    javascript用戶注冊(cè)提示效果的簡(jiǎn)單實(shí)例

    這個(gè)可以增加用戶驗(yàn)證,不用js alert來作提示,而是在右邊提示,現(xiàn)在很多網(wǎng)站都這樣做,有需要的朋友可以參考一下
    2013-08-08
  • 深入理解TypeScript 類型兼容性

    深入理解TypeScript 類型兼容性

    本文主要介紹了TypeScript 在函數(shù)、枚舉、類和泛型中的類型兼容性規(guī)則,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • 微信小程序?qū)崿F(xiàn)選擇內(nèi)容顯示對(duì)應(yīng)內(nèi)容

    微信小程序?qū)崿F(xiàn)選擇內(nèi)容顯示對(duì)應(yīng)內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)選擇內(nèi)容顯示對(duì)應(yīng)內(nèi)容,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • window.onresize 多次觸發(fā)的解決方法

    window.onresize 多次觸發(fā)的解決方法

    用了window.onresize但是發(fā)現(xiàn)每次 onresize 后頁面中狀態(tài)總是不對(duì),下面與大家分享下onresize 事件多次觸發(fā)的解決方法
    2013-11-11
  • TS中declare的簡(jiǎn)單使用方法

    TS中declare的簡(jiǎn)單使用方法

    declare 關(guān)鍵字用來告訴編譯器,某個(gè)類型是存在的,可以在當(dāng)前文件中使用,本文給大家介紹TS中declare的簡(jiǎn)單使用方法,感興趣的朋友一起看看吧
    2023-12-12
  • 微信小程序?qū)崿F(xiàn)image組件圖片自適應(yīng)寬度比例顯示的方法

    微信小程序?qū)崿F(xiàn)image組件圖片自適應(yīng)寬度比例顯示的方法

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)image組件圖片自適應(yīng)寬度比例顯示的方法,簡(jiǎn)單講述了image組件的常用屬性,并結(jié)合實(shí)例形式分析了微信小程序?qū)崿F(xiàn)圖片自適應(yīng)寬度比例的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • javascript Onunload與Onbeforeunload使用小結(jié)

    javascript Onunload與Onbeforeunload使用小結(jié)

    Onunload,onbeforeunload都是在刷新或關(guān)閉時(shí)調(diào)用,可以在<script>腳本中通過window.onunload來指定或者在<body>里指定。區(qū)別在于onbeforeunload在onunload之前執(zhí)行,它還可以阻止onunload的執(zhí)行。
    2009-12-12
  • js仿蘋果iwatch外觀的計(jì)時(shí)器代碼分享

    js仿蘋果iwatch外觀的計(jì)時(shí)器代碼分享

    這篇文章主要介紹了JS+CSS3實(shí)現(xiàn)的類似于蘋果iwatch計(jì)時(shí)器特效,很實(shí)用的代碼,推薦給大家,有需要的小伙伴可以參考下。
    2015-08-08

最新評(píng)論