JavaScript 中 let
, var
, const
的差異
使用 let
、var
和 const
宣告變數時分別在:作用域、初始化、重複宣告、重新賦值、提升時有不同的行為。
作用域 scope
var
的作用域是全域或是在 function 中,var
宣告的變數會被提升到整個函式的頂端;
let
跟 const
則是區塊(block)作用域,這裡的 block 指的是 function 中或 if-else block 或 for-loop block,let
跟 const
只在它們所在的區塊內有效,使它們更具預測性,減少變數意外被覆蓋的可能性。
初始化 Initialization
初始化就是指變數第一次的賦值。使用 var
跟 let
宣告的變數初始化可以不需要賦值;
使用 const
初始化則需要必須賦值,否則會拋出: SyntaxError: Missing initializer in const declaration 的錯誤。
var a;
let b;
const c; // SyntaxError: Missing initializer in const declaration