[JavaScriptWeird]No.29 觀念小叮嚀:陣列-任何東西的集合

前言

我們提過 JavaScript 是動態型別的程式語言,前面也介紹過動態型別的優點以及缺點,動態型別是相當強大的特性,像是用在 JavaScript 的陣列上。

陣列 (Array)

JavaScript 的陣列相較於其他程式語言的陣列來說彈性了不少。受惠於動態型別的緣故,JavaScript 的陣列可以是任何東西的集合,這可以讓我們寫出一些沒接觸過 JavaScript 的人可能感到困惑的程式。

此外,陣列的索引是從0開始的、陣列也有陣列實體語法,這跟物件實體語法很相似,不多說我們直接看範例:

1
2
3
4
5
// 陣列實體語法  
var arr = [1,2,3];
// 也可以這樣寫
// var arr1 = new Array();
console.log(arr[0]);

使用陣列實體語法建立陣列,並且在陣列內放入值並使用逗號分隔,陣列是從0開始算的,代表我可以使用 console.log 抓出指定的陣列值。

在大部分的程式語言,陣列通常只能放相同型別的東西,像是一個數字陣列、一個字串陣列、一個物件陣列等等,但是 JavaScript 可以是任何東西:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var arr = [  
1,
false,
{
name: 'Tony',
address: '111 Main St.'
},
function(name){
var greeting = 'Hello';
console.log(greeting + name);
},
'hello'
];
console.log(arr);

像這樣,我在 arr 陣列中各放了數值、布林、物件、函式 (也是物件的一種)、字串,並且輸出觀察結果。

看起來很怪異,不過在 JavaScript 中是完全合理的。

另外還可以有這樣的組合用法:

我預期呼叫陣列內的函式,並且帶入陣列內物件的 name 屬性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var arr = [  
1,
false,
{
name: 'Tony',
address: '111 Main St.'
},
function(name){
var greeting = 'Hello ';
console.log(greeting + name);
},
'hello'
];
arr[3](arr[2].name);

陣列索引是從 0 開始計算的,因此我們要先指定到函式的索引,而呼叫的方法一樣是加上 () 即可,參數的部分則是指定到陣列內物件的索引,並且使用點運算子取出屬性的值。

0%