---
# System prepended metadata

title: 【Day3】var、let、const宣告變數
tags: [JavaScript, 14th鐵人賽]

---

# 【Day3】var、let、const宣告變數
###### tags: `JavaScript` `14th鐵人賽`
本篇將介紹JavaScript三種變數宣告的差異

- 如何宣告變數
- 變數宣告特性
- 駝峰式命名
- 三者差別
---

## 如何宣告變數

var 變數名稱 = value;

let 變數名稱 = value;

const 變數名稱 = value;

分號為中斷程式碼並可接續下段程式

```jsx
let a = 1; // 用let宣告一個變數名稱為a，並賦予值為1
```

## 變數宣告特性

- 可接受英文大小寫、中文 、_組合
- 開頭不可使用數字
- 英文大小寫有分
- 宣告變數時，不可使用 “保留字”
可參考w3schools文件，ex:不使用false、function、var……等作為變數名稱
[JavaScript的保留字傳送門](https://www.w3schools.com/js/js_reserved.asp)

以下為宣告的範例

```jsx
let aA小狗$_ = 1; //可使用的內容

let aaa1 = 2; // 變數名稱可包含數字
let 1aaa = 3; // 開頭為數字錯誤

let dogNum = 4;
let dognum = 5;
//dogNum、dognum 兩者字母相同但大小寫不同在讀取時就會是兩個不同的值

let function = 6; // function為JavaScript物件型別不可作為變數名稱
```

## 駝峰式命名

這是計算機程序編寫時的一套命名規則，但這種命名方式是一種約定成俗的習慣，非絕對、強制，但在程式上卻可增加識別與可讀性。

命名方式為：變數名稱的第一個英文單字開頭是小寫，其餘的英文單字開頭是大寫。

`my_walletMoney、momName、candyPrice`

## 三者差別

- var: 函式作用域，在區塊{ }大括號範圍內語法用var宣告可能會感染全域變數
- let: 區塊作用域，被限制於其區塊內，一旦離開區塊則會失去作用。不可重複定義，禁止於同一層區域中重複宣告
- const: 區塊作用域，特性同let，但在使用上更嚴謹，一旦宣告變數後則無法被賦予新的值

```jsx
//在區塊內的var仍然可以存取
{
var walletMoney = 55;
}
console.log(walletMoney);
```

```jsx
//let 可在區塊中作用並直接賦新值，於區塊外失效
{
let a = 5;
console.log(a);
}
console.log(a); // 無法讀取
```

```jsx
//無法賦予新的值，錯誤
const a = 3;
a = 5 
```

以上為關於變數基礎的內容，若有問題歡迎糾正!謝謝!