var
。let
和 const
導入這麼久之後,仍時常看到 var
的芳蹤。(當然一部份原因跟 ES6 支援度的普及有關係)var
有幾個缺點,容易造成程式編寫上的不嚴謹,進而導致變數控管困擾。let
和 const
,有助於改善原本 var
不嚴謹的缺點,進而增加新的特性,例如 Day5、Day6 文章提到的舞棍阿伯……不對,是 Block Scope。let
和 const
之前,我們要先了解傳統 var
有什麼缺點。let
和 const
之前,我們要先了解傳統 var
有什麼缺點,才能理解為什麼需要導入 let
和 const
,對程式又能有什麼幫助。var
的變數宣告方法var
宣告變數的語法如下:作者閒聊:希望isFinished
能順利被賦值(遠目)
var
關鍵字來宣告變數。var
一次宣告多個變數,用逗號 (,
) 區隔。undefined
。var
有 3 個缺點,或稱為不足之處。var
有什麼缺點?註:以上這段程式如果完整執行,第一個console.log(x);
實際上會印出undefined
而不是 Error,因為變數宣告有 Hoisting 效果。關於 Hoisting ,預計後續的文章再作詳細介紹,本篇先單純關注var
的問題。
一個較好且普遍的程式編寫習慣:將需要宣告的變數集中在該作用域的一開始,並賦予初始值。
var
宣告的變數並不具 Block Scope 效果。var
無法做到這項控管,你想怎麼改變值都可以,對整體程式來說就造成風險。final
關鍵字來保護指定變數不能被更改值:const
關鍵字:var
宣告變數的 3 個缺點: 1. 語法允許重複宣告 (Re-Declaring) 2. 不支援區塊作用域 (Block Scope) 3. 不支援常數 (Constant) 特性var
的缺點和限制,下一篇文章就可以來看 ES6 的 let
和 const
如何改善這些不足。