適用場景
誤用場景
- 函數作為構造函數
- 需要修改函數的
this
- 需要使用
arguments
對象或訪問prototype
屬性
- 需要作為生成器函數
例如
需要修改函數的this
var user = {
name: "zhang",
appendAF: val => {
console.log(this.name + val); // apply不綁定this(箭頭函數不會創建自己的this,它只會從自己的作用域鏈的上一層繼承this。)
},
appendF: function(val) {
console.log(this.name + val); // apply綁定this
}
};
function call(obj, fname, ...args) {
console.log(obj);
obj[fname].apply(obj, args);
}
call(user, "appendAF", "qqq"); // undefinedqqq
call(user, "appendF", "qqq"); // zhangqqq
生成器函數
var genAF = (* () => {
yield 123;
})(); // 語法錯誤
var genF = (function* (){
yield 123;
})(); // 正確
參考
箭頭函數 | MDN