# JavaScript - 變數(Variable)與值(Value)
###### tags: `javascript`
## 變數
* 透過程式幫我們記錄資訊 / 儲存與取用值
* 宣告變數的方法:let, const, var
* 基本型別(primitives types)介紹
1. 字串(String)
2. 數字(Number)
3. 布林(Boolean)
4. undefined
5. null
6. Symbol
* 型別操作方法
## 宣告
```javascript=
let a = 1;
//意義解釋
// let a = 1
//宣告一個變數,變數名稱為 a,並賦予值為 1
```
## 變數存放的記憶體空間
* 觀念:變數設定無法跨頁面共享,每個頁面都是獨立的記憶體空間
* 重新整理頁面即清空記憶體,原先設定的變數值皆被清掉
## number 型別 - 簡易計算機功能
(使用 chrome 的 console 面板)
* 加:3+2
>5
* 減:4-2
>2
* 乘:2*3
>6
* 除:6/3
>2
* 餘數:10%2
>0
* 平方:5**2
>25
```javascript=
//賦予變數=>值的儲存
let a = 1;
let b = 6;
let c = 3;
let d = 2*3
a*b=6
b*c=18
let e = a*b
e=6
```
## number 型別 - 各種數字的支援程度
* 正值
* 負值
* 浮點數
```javascript=
let a = 1;
let b = -3;
let c = 3.14;
```
## 檢驗代表的型別
* typeof
```javascript=
a = 1;
typeof a
"number"
```
## JavaScript有三種宣告方式
* let
宣告一個可隨意更改其內容的區塊區域變數
* const
宣告一個只可讀取的不可變常數
* var
宣告一個可隨意更改其內容的變數
## let 變數
* let 宣告後 value 的值可以被覆寫
* 不可重複宣告,但變數的值可以被修改更新
```javascript=
let cokePrice = 30;
cokePrice = 40;
//已宣告過,覆寫新的值就不用再重複寫 let
```
## const 常數
* const 宣告後 value 的值無法被覆寫
* 不可重複宣告,常數的值不可以被修改更新
```javascript=
let cloud = 3; //原本看到雲朵為3朵
cloud = 8; //風一吹看到變成8朵
const sunNum = 1; //太陽只會有1顆
sunNum = 2; //const宣告基本型別後無法被修改
>Uncaight
//const 的值無法再重新覆寫
const sale = 0.7; //折扣數固定,較適合用不可變動的 const
const hatPrice = 100; //定價固定,較適合用不可變動的 const
let hatNum = 3; //顧客購買數量,較適合用可變動的 let
let total = sale*hatPrice*hatNum; //總金額,較適合用可變動的 let
total
>210
```
## var 變數
* var 宣告後 value 的值可以被覆寫
* var 宣告可隨意更改其內容
* 較不嚴僅
### 歷史的眼淚
* var 會汙染全域變數,容易造成不可預期的錯誤,主要是因為將變數宣告全域會發生幾種情況
1. 變數名稱衝突,發生預期外的程式錯誤
1. 佔用記憶體,無法回收
* 使用 var 宣告變數較容易造成奇奇怪怪的問題
## 【補充小知識】javascript 宣告變數
* 變數命名限制:
* 有區分大小寫
* 開頭第一個字元不可為數字
* 開頭第一個字元可為英文或特殊符號
* 命名可以是中文
* [保留字](https://www.w3schools.com/js/js_reserved.asp):命名不可撞名否則會出錯