generater跟函數很像:
function* fn(x){ yield x; yield x++; return x;}
如上所示,generater用function*定義,可以用yield返回多次,也可以使用return返回;
調用generater有兩個方法,一是一直調用generater的next()方法;
console.log(fn.next());
console.log(fn.next());
console.log(fn.next());
直到fn.next()返回true,遍歷結束;
第二種,使用for....of;
for(var i of fn());
箭頭函數
ES6新加的函數;
函數用=>定義;
例如:X=>X * X;
相當於function(x){
return x * X;
}
當參數大於一個時用()括起來;
如果返回的是對象,則需要這樣寫;
x => ({ fun: x })
箭頭函數的最大作用是修復了this的指向;
在閉包函數中用箭頭函數就不需要使用之前的hack方式修改this的指向了,用箭頭函數替代該函數就可以了。
箭頭函數有幾個使用注意點。
(1)函數體內的this
對象,就是定義時所在的對象,而不是使用時所在的對象。
(2)不可以當作構造函數,也就是說,不可以使用new
命令,否則會拋出一個錯誤。
(3)不可以使用arguments
對象,該對象在函數體內不存在。如果要用,可以用Rest參數代替。
(4)不可以使用yield
命令,因此箭頭函數不能用作Generator函數。