[JavaScript] - let & const [ES6]
在了解 let & const 我們先看看 var 的例子:
1 | for(var i=0; i<=2; i++) { |
因為 var i
是全域變數.所以var-out-i
可以印出值,但這樣容易造成程式之間變數的污染.
let
let 特性是屬於塊級作用域( block scoped ),塊級作用域就是限縮在 { }
之內,我們用上方的例子更改一下
1 | for(let i=0; i<=2; i++) { |
透過上方let
的例子,可以看到 let-out-i
卻是is not defined
,let
只在{ }
有效.
可以透過另一個例子再來看看:
1 | if(true){ |
const
const
也是塊級作用域( block scoped ),但要注意的是只要一指定就不能再做更改,且不能重複宣告.且在哪一行宣告就要立即給予值.
我們透過上放的特性,來看看以下幾個例子:
不能重複宣告:
1 | const student = 'Tony'; |
塊級作用域:
1 | if(true){ |
立即給予值:
1 | if(true){ |
但今天若是用在object
與 array
上就不一樣了:
object
: 只能修改屬性但不覆寫array
: 只能修改,但不能重新指定一個新的陣列
我們來看看object
與 array
的例子
object:
1 | const andy = {'money': 100 }; |
array:
1 | const student = []; |
參考:
JavaScript ES6 中使用block-scoped 的 let 宣告變數
MDN-let