1. 程式人生 > >ECMAScript 學習筆記(2)--ES6新增let、箭頭函數理解

ECMAScript 學習筆記(2)--ES6新增let、箭頭函數理解

輸出 分析 引擎 重新 -a 都是 存在 使用 [1]

1、關於let
用來鎖定塊程序內的變量非常實用:

   var a = [];

for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 輸出10
用var i 並沒有將i值鎖定,數組a中每個成員中的i都是公用一個變量空間,所以最後i為10,a[1]()-----a[10]()輸出均為10

   var a = [];

for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 輸出6

用let i 會針對for每次循環的{ }塊代碼重新定義變量空間,js解釋引擎會自動記錄上次i值,所以a的每個成員的i值都是不一樣的!

2、箭頭函數使函數定義變得更簡潔:

var f = () => 5;
// 等同於
var f = function () { return 5 };

var sum = (num1, num2) => num1 + num2;
// 等同於
var sum = function(num1, num2) {
return num1 + num2;
};

箭頭前一般為傳入參與,箭頭後一般返回參數,沒有傳入參數可以用(),如果沒有返回參數可以用{}把語句包含。

關於箭頭函數有幾個使用註意點:

(1)函數體內的this對象,就是定義時所在的對象,而不是使用時所在的對象。

(2)不可以當作構造函數,也就是說,不可以使用new命令,否則會拋出一個錯誤。

(3)不可以使用arguments對象,該對象在函數體內不存在。如果要用,可以用 rest 參數代替。

(4)不可以使用yield命令,因此箭頭函數不能用作 Generator 函數。
先做個記錄,有時間再分析

ECMAScript 學習筆記(2)--ES6新增let、箭頭函數理解