JavaScript 教學 - 資料型態 (Data Type) - 下
介紹 JavaScript 中的資料型態 (型別),包含物件 (Object)、陣列 (Array)、未定義 (undefined)、空值 (null)、和函式 (Function)。
陣列 (Array)
語法
在 JavaScript 中可以使用三種方式來建立陣列:
- Array 物件建構,參數為初始的陣列元素,當參數只有一個且為數字型別時,表示宣告陣列的長度。
- Array 函式,同上。
- Array 實字,可直接建立陣列元素,無法宣告陣列長度。
一些範例如下:
1 | console.log(new Array(178, 169.99, '30cm', new Array(9527))); // [178, 169.99, "30cm", Array[9527]],最後一個元素為長度 9527 的陣列 |
事實上在 JavaScript 中並不需要特別去指定陣列的長度,他會動態的擴充,而又由於建構或函式的參數有兩種情況,容易混淆,所以直接使用實字的方式是最好的。
元素的存取
我們使用中括號 ([]
) 加上索引值 (index) 來表示陣列中的元素,例如:array[123]
,以此方式可以取得或修改陣列元素的內容。以下為存取陣列的相關範例:
1 | var ar = new Array(); |
陣列的判斷
上一篇文章提到使用 typeof
可以判斷型別,但是陣列取得的結果是 object
,要更進一步精確的判斷陣列,可以用以下三種方式:
- 利用
Array.isArray()
函式。 - 利用
instanceof
運算子判斷是否為 Array 類別。 - 利用
Object.prototype.toString()
函式判斷字串。
1 | console.log(Array.isArray([])); // true |
isArray
在 ECMAScript v5 中才有定義,而 instanceof
必須是同一個 window
下建立的物件才會正確,也就是如果網頁有多個 frame,可能會判斷錯誤,所以利用字串判斷的方式是目前較好的做法。
物件 (Object)
語法
在 JavaScript 中可以使用兩種方式來建立物件:
- Object 物件建構。
- Object 實字,可直接建立物件成員。
使用實字的語法與 Json 類似,利用大括號 ({}
)、Key 和 Value 組成,Key 的部分可以是字串格式,一些範例如下:
1 | var obj = new Object(); |
屬性的存取
JavaScript 物件的屬性能夠使用兩種方式存取:
- 利用 (
.
) 運算子。 - 關聯式陣列。
關聯式陣列使用字串作為索引鍵,因此能夠做動態的變化,一些範例如下:
1 | var obj = { n1: 1 }; |
轉型
Object 作為函式使用時,表示轉型為物件,基本上只用來將布林、數值和字串轉成對應的物件類別,而參數為 null
或 undefined
時則相當於建立新物件,但本意是轉型故不列入上述方法之一。
1 | console.log(Object(169.99)); // Number |
未定義 (undefined)
語法
JavaScript 中並不存在保留字能夠直接使用未定義這個特殊值,但 JavaScript 中預設了一個值為未定義的變數,變數名稱同樣命名為 undefined
。除此之外可以簡單利用下面兩種方式產生 undefined
的資料:
- 宣告無初始值變數。
- 使用 void 運算子。
利用這些方式可以進一步進行判斷,一些範例如下:
1 | var myundefined; |
全域變數
承接上文,undefined
是 JavaScript 預設的一個全域變數,就像 document 之類的變數一樣,並不是一個保留字,這意思是不正確的使用可能會造成無法預料的結果:
1 | console.log('undefined' in window); // true, 全域變數 |
現在較新的瀏覽器會防止你修改 undefined
這個變數,但較舊的瀏覽器,例如 IE8 以前的版本仍然會存在這個問題。
安全的使用undefined
承上一節所述,未避免其他地方有人修改了 undefined
的值而造成錯誤,我們可以自行建立 undefined
變數確保資料正確,如以下兩種方法:
1 | // 宣告區域變數不指定初始值 |
變數比較
由於未定義意思空值類似,都是表示沒有資料,所以在比較上是相等的,但特別需要注意的是,未定義只和未定義與空值相等。
1 | console.log(undefined == undefined); // true |
空值 (null)
語法
空值的值只有 null
一種,只能是小寫,表示沒有資料。
1 | console.log(null); // null |
變數比較
和未定義類似,空值只和空值與未定義相等。
1 | console.log(null == null); // true |
移除變數
null
本身表示沒有資料,可以指派給變數,但意思並不代表移除變數 (未定義亦是如此),必須使用 delete
運算子來移除變數:
1 | var obj = {year: 2012, month:12, day: 21}; |
需注意只能用來移除以物件屬性建立的變數。
函式 (Function)
語法
在 JavaScript 中函式是一個特殊的型別,可以像是變數一樣操作,一般有以下三種方式可以建立函式:
- 函式敘述 (statement)。
- 函式實字。
- 函式物件建構,最後一個參數為函式主體,前面的參數為函式介面參數名稱。
一些範例如下:
1 | // 函式敘述 |
從上面的範例可以看到,使用函式敘述的函式內部名稱會和函式名稱一致,函式實字則可省略,而函式物件則使用 anonymous 的名稱。
延伸閱讀
上一篇 JavaScript 教學 - 資料型態 (Data Type) - 上
下一篇 JavaScript 教學 - 變數 (Variables)