1. 程式人生 > >ES5和ES6變數宣告比較

ES5和ES6變數宣告比較

ES5變數宣告之var:

1.var宣告的變數,會出現宣告提前的問題,內層變數覆蓋外層變數

例如:var tmp = now Date();

function test() {

console.log(tmp); // undefined 宣告提前

    if(true){

  var tmp = "hello world";

    }

}

2.變數洩露,成為全域性變數

例如:var s  = 'Hello';

for(var i = 0;i<s.length;i++) {

  console.log(s[i]);

}

console.log(i); // i = 5;

ES6 提供 let 和 const 來代替 var 宣告變數:

優點:

1.不再需要立即執行的函式表示式(IIFE)
在 ES5 中,我們需要構造一個立即執行的函式表示式去保證我們不汙染全域性作用域。在 ES6 中, 我們可以使用更簡單的大括號({}),然後使用 const 或者 let 代替 var 來達到同樣的效果。

2.迴圈體中的閉包不再有問題
在 ES5 中,如果迴圈體內有產生一個閉包,訪問閉包外的變數,會產生問題。在 ES6,你可以使用 “let” 來避免問題。

3.防止重複宣告變數
ES6 不允許在同一個作用域內用 let 或 const 重複宣告同名變數。這對於防止在不同的 js 庫中存在重複宣告的函式表示式十分有幫助。