全域/區域慢慢分得清楚var let const

工程師卡卡
2 min readMay 3, 2020

--

what ? var | let |const

在 ES5前只有 var 的存在

var宣告在函數內則只會在函數內起作用;而在函數外宣告則會變成全域皆可用。

若是直接對一沒宣告過的變數賦值,可能會發生「全域作用域污染」。

建議一定要宣告你的變數, 不管要將它使用於全域範圍內或者函數內。

而在 JavaScript 中,變數可以先使用再宣告,但建議還是永遠都把變數的宣告放在函數的最頂端,否則可能導致混亂的情況。

在 ES6 const及 let 出生了

先來探討什麼是作用域(scope)?變數在程式中可以被存取的範圍。

let , const 作用域為區塊域(block),({} or ())中作宣告使用,作用域範圍較小。let可以被重新指定值,const則無法重新指定值;而 var 作用域在函數域(function)裡也可以在({} or ())中作宣告使用,作用域範圍較大。

在一個區塊裡let 與 const 無法重複宣告,將形成一個暫時性死區。

而 var 在一個函數域裡是可以重複宣告,新宣告的將會覆蓋舊的。

然而 var 這樣的宣告方式程式碼在運行時可能會出有區域變數覆蓋全域變數或者for loop中循環變數洩漏為全域變數的副作用發生。

var 在宣告前時console.log出來會出現Undefine

let 在宣告前時console.log則會直接出現Reference Error

在開發中使用ES6的const 及 let,將會讓宣告更為謹慎,讓更專案更穩定。

--

--

工程師卡卡
工程師卡卡

Written by 工程師卡卡

Frontend developer Swift baby level

No responses yet