ECMAScript 之 Const
const
也是 ECMAScript 2015+ 的代表 keyword,應盡量使用const
避免 Side Effect,除非真的要修改變數。
Version
ECMAScript 2015
Definition
宣告常數於 block{}
內。
與let
差異只有let
是變數
,而const
是常數
,且都是 block level
Scope
scope01.js
function constTest() { const x = 1; if (true) { x = 2; console.log(x); } console.log(x); } constTest(); // SyntaxError
與let
一樣都是block
level,由於x = 2
修改x
,因此 SyntaxError。
scope02.js
const x = 'global'; console.log(window.x); // undefined
在 global level 使用 const,也不會汙染 DOM 的window
object。
Initialization
initialization01.js
const x; x = 1; console.log(x); // SyntaxError
let
可先宣告,然後再給值,但const
一定要宣告同時給值
。
只能寫成
const x = 1; console.log(x); // 1
因為 const 強調不能被 reassign,因此宣告同時給值
合理
Not Immutable
not-immutable.js
const data = { name: 'Sam' }; data.name = 'Kevin'; console.log(data.name); // Kevin
const
並不代表 data 是 Immutable,只代表變數不能被 reassign。
Define Function
define-function.js
const f = (x, y) => x + y; console.log(f(1, 1));
理論上也可以使用let
定義 function,但因為 function 經過定義後就不會被 reassign,所以實務上都是使用const
。
Conclusion
const const const
Sample Code
完整的範例可以在我的ofollow,noindex">GitHub 上找到
Reference
JavaScript" target="_blank" rel="nofollow,noindex">MDN JavaScript ,const