變數只是個名字,只是為了要識別,讓你程式語言在計算的時候,有個放計算資料內容的容器,當你在執行的時候就可以,依照你給他的容器名稱,把他叫出來使用,變數本身沒意義。

在程式語言中=(x 等號)而是指定,由右側的值指定給左側的變數名稱。==則是比較兩邊的值。 但在 JavaScript 中==雖然也是比較的意思,不過 JavaScript 會有自動轉型的問題,為了不要讓你的程式碼出現奇怪的內容,建議使用更為嚴謹的===。

| 保留字 | ||||||
|---|---|---|---|---|---|---|
| break | case | catch | class | const | continue | debugger |
| default | delete | do | else | export | extends | finally |
| for | function | if | import | in | instanceof | new |
| return | super | switch | this | throw | try | typeof |
| var | void | while | with | yield |
變數命名需清楚與有意義。


變數有沒有宣告有差嗎? 有宣告叫變數,沒宣告叫指定。
建立期 JavaScript 會先將你宣告的變數儲存,再給他一個初始化的值 undefined。
執行期再按照程式碼逐行執行代碼,將值分配給變量,並執行函數調用。



從上圖可知在 function 裡的 var 變數不會影響到外部程式,可在 if 身上會影響到外面的 console.log(a),代表 var 是 function scope。
同理從上圖可知 function 裡的 let 變數不會影響到外部程式,在 if 身上也不會影響到外面的 console.log(a),代表 let 是 block scope{}。
| var | let/const | |
|---|---|---|
| Scope | function scope | block scope{} |
| 重複宣告 | 可 | 不可 |
| 變數內容重複指定 | 可 | 可/不可 |
| 可能會造成全域屬性 | 會 | 不會 |
| 變數提昇 | 有 | 有(被 TDZ 罩住) |