Head First Javascript 程式設計讀書筆記(四)

fzhw88發表於2017-09-28

陣列是一種能儲存多個值的資料型別。

var arr = [100, 20, 30];
console.log( arr[1] ); // 20
var len=arr.length;
console.log( len );     // 3
arr[2] = 0;
console.log( arr[2] ); // 0

第一行建立了一個陣列,通過[]建立陣列屬於用陣列的字面量建立陣列,在[]中依次輸入每個資料,用“,”隔開即可。陣列中每一項的資料型別可以是任意的,字串,布林值,數值,甚至陣列,函式都可以,資料的個數也沒有限制(受制於計算機記憶體和計算能力等,實際上不應該有太多的資料項)。

第二行訪問了一個陣列元素,[]中的數字表示陣列的索引位置,陣列的索引從0開始。

第三行獲取了陣列的長度,每個陣列都有一個length屬性,它的值也就是陣列的長度,等於陣列的最大索引值+1。

第五行修改了陣列中第三項的值,修改陣列中某一項資料的值,只需要用賦值語句給它重新賦值即可。 可以用var arr=[];或者var arr=new Array();來建立一個空陣列,這兩種方式建立的空陣列無任何區別。

要遍歷陣列中的所有值,可以使用迴圈,對於陣列,通常用for迴圈比較常見,比如:

for(var i=0; i<arr.length;i++){
  console.log( i );
}
// 100
// 20
// 0

for是關鍵字,i是計算器,被初始化為0,i<arr.length 是迴圈判斷條件,{ }中的內容為迴圈體,i++則是每次迴圈體執行完後執行的用以改變計算器的語句。 for迴圈中,變數初始化語句,條件判斷語句,變數變化語句甚至迴圈體都是可選的,所以完全可以代替while迴圈,不過具體使用哪種迴圈完全取決於編碼習慣和個人喜好。

i++是變數遞增語句,相當於i = i+1(在複雜情況下還是有區別的~),相應的,有遞減運算語句,i--。

var arr=[];
arr.push( 30 );
console.log( arr.length );   // 1
arr[10] = 10;
console.log( arr.length );  // 11
console.log( arr[5] );         // undefined

這段程式碼第一行建立了一個空陣列。

第二行呼叫陣列的push方法(實際上是一個函式,可以先不管它的原理,物件中會講)在陣列的最後一項新增了一個新的陣列項(空陣列沒有資料項,所以新增在第一項)並用它的引數給陣列項賦值,簡單的arr.push( a )等價於arr[arr.length] = a。但實際上push可以接受任意多的引數,它會將它的引數按順序依次增降到呼叫它的陣列的末尾。

第四行程式碼直接給arr[10]賦值,這是允許的,通過第五行可以看到,這樣操作會改變陣列的長度(前面說過,陣列的長度等於它最後一項的索引值+1),第六行則說明,這樣形成的陣列,中間的陣列項是未賦值的(undefined),這種陣列稱為稀疏陣列(這和自己把一個稠密陣列的陣列項賦值為 undefined 是不同的,和用 delete 刪除稠密陣列的某些陣列項的值相同,書中未提及),建立一個稀疏陣列的簡單方法是 var arr = new Array(5),這樣就建立了一個長度為5的稀疏陣列。

筆記寫完了,其實我有點後悔寫這書的筆記了,還是那個原因,這書看起來挺有趣,對於初學者來說更是能極大的加深對基本概念的理解,而且也好玩,但是我已經不是初學者了,一章我半小時就能看完,也覺得挺有趣,但寫這些筆記也要半小時。對我來說好像沒啥收穫,所以後面的內容還寫不寫就看情況啦~

相關文章