其實現在還有些情況為了相容性,會把寫好的 ES6 語法編譯回去 ES5 ,因此要了解新寫法
與舊寫法的區別實益在哪?在舊的 var 宣告法造成的雷有:
1. 提升:
var math = function () {
console.log( x );
var x = 10
}
console.log( x ) // undefined
由於 function 內有宣告,因此還是可以執行,但是實際上從上到下執行 console.log 的時候,x 還沒宣告,因此是 undefined 。
2. 全域變數:
var x = 1
var math = function (y) {
x = 10;
return x + y
};
console.log( math(3) ); // 13
console.log( x ) // 10
當 JavaScript 在 function 內找不到宣告時,就會一層一層往外找,所以最後就改了最外層的 x 。
知道這些問題之後,其實只要養成良好的開發習慣不用 let 與 const 也無所謂,但就是加一層
保險, let 用於宣告一個「只作用在當前區塊的變數」,因此不會超出當前區塊; Const 有點像
使用 let 所宣告的變數,具有區塊可視範圍。常數不能重複指定值,也不能重複宣告。
結論:為了避免變數遭到預期外的修改,變數都應該先宣告再做使用,並且盡量元件化各自
可以運作,而不是 a 去改 b 、 b 又改 c 造成難以維護與判斷更改數值的源頭。
參考資料:
沒有留言:
張貼留言