創(chuàng)建數(shù)組的第二種基本方式是使用數(shù)組字面量表示法。數(shù)組字面量由一對包含數(shù)組項(xiàng)的方括號表示,多個數(shù)組之間以逗號隔開,如下所示:
var colors=["red","blue","green"]j //創(chuàng)建一個包含3個字符串的數(shù)組
var names=[]; //創(chuàng)建一個空數(shù)組
var values=[1,2,]; //不要這樣!這樣會創(chuàng)建一個包含2或3項(xiàng)的數(shù)組
var options=[,,,,]; //不要這樣!這樣會創(chuàng)建一個包含5或6項(xiàng)的數(shù)組
以上代碼的第一行創(chuàng)建了一個包含3個字符串的數(shù)組。第二行使用一對空方括號創(chuàng)建了一個空數(shù)組。第三行展示了在數(shù)組字面量的最后一項(xiàng)添加逗號的結(jié)果:在IE中,values會成為一個包含3個項(xiàng)且每項(xiàng)的值分別為1、2和undefined的數(shù)組;在其他瀏覽器中,values會成為一個包含2項(xiàng)且值分別為l和2的數(shù)組。南昌網(wǎng)絡(luò)公司做網(wǎng)站公司提醒廣開發(fā)人員,出現(xiàn)這種情況的主原因是IE的ECMAScript實(shí)現(xiàn)在數(shù)組字面量方面存在bug。由于這個bug導(dǎo)致的另一種情況如最后一行代碼所示,該行代碼可能會創(chuàng)建包含5項(xiàng)的數(shù)組(在Firefox. Opera. Safari和Chrome中),也可能會創(chuàng)建包含6項(xiàng)的數(shù)組(在IE中)。在像這種省略值的情況下,每一項(xiàng)都將獲得undefined值;這個結(jié)果與調(diào)用Array構(gòu)造函數(shù)時傳遞項(xiàng)數(shù)在邏輯土是相同的。但是由于IE的實(shí)現(xiàn)與其他瀏覽器不一致,因此我們強(qiáng)烈建議不要使用這種語法。
與對象一樣,在使用數(shù)組字面量表示法時,也不會調(diào)用Array構(gòu)造函數(shù)(Firefox除外)。
在讀取和設(shè)置數(shù)組的值時,要使用方括號并提供相應(yīng)值的基于0的數(shù)字索引,如下所示:
var colors=["red","blue","green"]; //定義一個字符串?dāng)?shù)組
alert (colors[O]); //顯示第一項(xiàng)
colors [2]="black"; //修改第三項(xiàng)
colors[3]="brown"; //新增第四項(xiàng)
方括號中的索引表示要訪問的值。南昌建網(wǎng)站公司工程師提示,如果索引小于數(shù)組中的項(xiàng)數(shù),則返回對應(yīng)項(xiàng)的值,就像這個例子中的colors[o]會顯示"red"一樣。設(shè)置數(shù)組的值也使用相同的語法,但會替換指定位置的值。如果設(shè)置某個值的索引超過了數(shù)組現(xiàn)有項(xiàng)數(shù),如這個例子中的colors[3]所示,數(shù)組就會自動增加到該索引值加l的長度(就這個例子而言,索引是3,因此數(shù)組長度就是4)。
數(shù)組的項(xiàng)數(shù)保存在其length屬性中,這個屬性始終會返回0或更大的值,如下面這個例子所示:
var colors=["red","blue","green"]; //創(chuàng)建一個包含3個字符串的數(shù)組
var names=[]; //創(chuàng)建一個空數(shù)組
alert(colors.length); //3
alert(names.length); //0
數(shù)組的length屬性很有特點(diǎn)——它不是只讀的。因此,通過設(shè)置這個屬性,可以從數(shù)組的末尾移除項(xiàng)或向數(shù)組中添加新項(xiàng)。請看下面的例子:
var colors=["red","blue","green"]; //創(chuàng)建一個包含3個字符串的數(shù)組
colors.length = 2;
alert(colors(2)); //undefined
這個例子中的數(shù)組colors -開始有3個值。將其length屬性設(shè)置為2會移除最后一項(xiàng)(位置為2的那一項(xiàng)),結(jié)果再訪問colors[2]就會顯示unde fined了。如果將其length屬性設(shè)置為大于數(shù)組項(xiàng)數(shù)的值,則新增的每一項(xiàng)都會取得undefined值,如下所示:
var colors=["red","blue","green"]; //創(chuàng)建一個亂會3個字符串的數(shù)組
colors.length = 4;
alert(colors(3)); //undefined
在此南昌網(wǎng)頁設(shè)計公司工程師提示,雖然colors數(shù)組包含3個項(xiàng),但把它的length屬性設(shè)置成了4。于是,這個數(shù)組中位置為3的那一項(xiàng)就獲得了unde fined值,數(shù)組的項(xiàng)數(shù)也增加到4。 利用length屬性也可以方便地在數(shù)組末尾添加新項(xiàng),如下所示:
var colors=["red","blue","green"]; //創(chuàng)建一個包含3個字符串的數(shù)組
colors[colors.length] = "black"; //(在位置3)添加一種顏色
colors[colors.length] = "brown"; //(在位置4)添加一種顏色
由于數(shù)組最后一項(xiàng)的索引始終是length-l,因此下一個新項(xiàng)的位置就是length。每當(dāng)在數(shù)組末尾添加一項(xiàng)后,其length屬性都會自動更新以反應(yīng)這一變化。換句話說,上面例子第二行中的 colors[colors .length]為位置3添加了一個值,最后一行的colors[ colors .length]則為位置4添加了一個值。當(dāng)把一個值放在超出當(dāng)前數(shù)組大小的位置上時,數(shù)組就會重新計算其長度值,即長度值等于最后一項(xiàng)的索引加l,如下面的例子所示:
var colors=["red","blue","areen"]; //創(chuàng)建一個包含3個字符串的數(shù)組
colors[99] = "black"; //(在位置99)添加一種顏色
alert(colors.length); //100
在這個例子中,我們向colors數(shù)組的位置99插入了一個值,結(jié)果數(shù)組新長度(length)就是100 (99+1)。而從位置3到位置98的每一項(xiàng),都將獲得undefined值。
南昌網(wǎng)站建設(shè)公司百恒網(wǎng)絡(luò)前端開發(fā)工程師提示,數(shù)組最多可以包含4294967295個項(xiàng),這幾乎已經(jīng)能夠滿足任何編程需求了,如果想添加的項(xiàng)數(shù)超過這個上限值,就會發(fā)生異常.而創(chuàng)建一個初始大小與這個上限值接近的數(shù)組,則可能會導(dǎo)致運(yùn)行時間超長的腳本錯誤.
希望本文對廣大站長或從事企業(yè)網(wǎng)站建設(shè)公司的團(tuán)隊(duì)有所幫助,如對此不太理解的,可以與南昌做網(wǎng)站公司百恒網(wǎng)絡(luò)技術(shù)部聯(lián)系。我們很高興與廣大站長和從事企業(yè)網(wǎng)站建設(shè)公司技術(shù)人員分享我們的技術(shù)和經(jīng)驗(yàn)。
南昌網(wǎng)站建設(shè)--百恒網(wǎng)絡(luò),專業(yè)專注于南昌網(wǎng)站建設(shè),為用戶提供高品質(zhì)的網(wǎng)絡(luò)產(chǎn)品和優(yōu)質(zhì)的服務(wù)是我們始終追求的目標(biāo)!