---
# System prepended metadata

title: 筆記_Javascript基礎攻略 變數與資料型別
tags: [javascript]

---

# 筆記_Javascript基礎攻略 變數與資料型別
-----
###### tags: `javascript`
---

[重新認識 JavaScript: Day 03 變數與資料型別](https://ithelp.ithome.com.tw/articles/10190873)
-------


JavaScript 中的變數宣告有其一定的規則，變數的第一個字母必須為英文字母、底線 _ 或是錢字號 $ ，後面可以是英文字母、底線 _ 或是錢字號 $ 以及數字。 變數名稱不可以是保留字 (Reserved Words) 與關鍵字 (keyword)。

JavaScript 的語法是有區分大小寫的
也就是說，變數 app 與 App 在 JavaScript 會被認為是兩個不同的變數，而且自 JavaScript 1.3 之後開始支援 Unicode。


宣告方式
- var
- let
- const

在 ES6 之後宣告「變數」與「常數」，除了 var 之外，還可以透過 let 與 const 做宣告。

但在開發的時候你可能會發現一件事，**就是即便你的變數在事前沒有透過 var 做宣告的時候，仍然可以給定變數初始值，但強烈不建議這麼做**。

### 要記得一句話，所有沒有透過 var 宣告的變數都會自動變成全域變數。
---

基本型別又分成 string、number、boolean、null、undefined 幾種 [註1]，除了上述幾種之外，都可以歸類至物件型別 (Object)。

註1: ES6 之後多了新的型別：Symbol。


## null 與 undefined
在大多數的程式語言中，都有 null 或是類似空值類型的設定，而 JavaScript 又多了一個 undefined，這裡就把它們放在一起比較。

這兩個類型的共通點是，null 型別只有一種值，就是 null ，而 undefined 類型也只有一種值，就是 undefined。
```javascript=
var a;         // undefined, 尚未給值，未定義

var b = null;  // null, 明確代表此變數沒有值
```

其實可以看出，當變數 a 被宣告時，在沒有給變數任何數值的情況下，變數的預設值會是 undefined，而變數 b 則是直接被明確地設定為 null 。

雖然這兩種值透過 Boolean() 強制轉型成 boolean 時，都會代表 false 的意思，但兩者間仍然有意義上的差別。

- undefined 代表的是「(此變數) 還沒有給值，所以不知道是什麼」
- null 代表的是「(此變數可能曾經有值，可能沒有值) 現在沒有值」


## 陣列

陣列的宣告方式

```javascript=

var array1 = new Array();

var array2 = [];  // 陣列實字 (Array literal)：

```

JavaScript 的陣列可以看作是一種特別的「物件」，同樣是零至多個元素的集合，且並沒有規定它能放什麼東西進去。 陣列內可以是原始的資料類型、其他陣列、函式等等。 要注意的是，陣列是個有順序性的集合，且只能透過 [] 來存取。











