漫話ES6: var let 和 const 命令
- 2019 年 10 月 5 日
- 筆記
part1. var let 和 const 命令

var聲明的變數作用域為整個函數體(當按聲明一的方式聲明變數時);當var變數聲明在函數外,該var變數的作用域為**整個js文件周期**(全局作用域)


let命令,用來聲明變數。它的用法類似於var,但是所聲明的變數,只在let命令所在的程式碼塊內有效。允許塊級作用域的任意嵌套。但是不能反覆被聲明。


關羽:荊州只能有一位老大,就是我關羽。出了城,那就是我大哥的天下了!
const聲明一個只讀的常量,這意味著,const一旦聲明變數,就必須立即初始化,不能留到以後賦值。
const實際上保證的,並不是變數的值不得改動,而是變數指向的那個記憶體地址所保存的數據不得改動。對於簡單類型的數據(數值、字元串、布爾值),值就保存在變數指向的那個記憶體地址,因此等同於常量。
但對於複合類型的數據(主要是對象和數組),變數指向的記憶體地址,保存的只是一個指向實際數據的指針,const只能保證這個指針是固定的(即總是指向另一個固定的地址),至於它指向的數據結構是不是可變的,就完全不能控制了。因此,將一個對象聲明為常量必須非常小心。

張飛:這一集我動一動就算輸,死也不動!
經典案例: 輸出0-9數組的平方

擴展:除了 ES5 兩種聲明變數的方法:var命令和function命令。
ES6 除了添加let和const命令,另外兩種聲明變數的方法:import命令和class命令。所以,ES6 一共有 6 種聲明變數的方法。我們以後會給大家再聊聊這些應用