ES6 箭頭函數
阿新 • • 發佈:2018-01-28
fun gpo mar 必須 簡單例子 markdown func 箭頭 second
箭頭函數
定義
我覺得箭頭函數就是將es5中的普通函數換一種寫法,使代碼看起來更加簡潔
基本方法
1、簡單例子
var f=v=>v;
console.log(f("箭頭函數")); //箭頭函數
上面的代碼等同於
var function(v){
return v;
}
console.log(f("普通函數")); //普通函數
2、箭頭函數不需要參數或者需要多個參數時,用圓括號代表參數部分
var f=()=5;
//等同於
var f=function(){
return 5;
}
var sum=(num1,num2)=>num1+num2; //等同於 var sum=function(num1,num2){ return num1+num2; }
3、箭頭函數的代碼部分多於一條語句,就要用大括號將其括起來,並使用return語句返回,返回的是對象,就必須在對象外面加上括號
var sum=(num1,num2)=>{return num1+num2};
var getId=id=>({id:id,name:"aaaa"}) //返回的是對象
4、簡化回調函數
//例子1 //普通寫法 [1,2,3].map(function(x){ return x*x; }) //箭頭函數寫法 [1,2,3].map(x=>x*x) //例子2 //正常函數寫法 var result=values.sort(function(a,b){ return a-b; }) //箭頭函數寫法 var result=values.sort((a,b)=>a-b);
使用註意事項
- 函數體內的this對象就是定義時所在的對象,而不是使用時所在的對象
function Timer(){
this.second=0;
setInterval(()=>this.second++,1000);
}
var timer=new Timer();
setTimeout(()=>console.log(timer.second),3100);
//輸出結果為3而不是0,因為箭頭函數讓this總是指向Timer的實例對象
- 不可以當作構造函數
- 不可以使用arguments對象,該對象在函數體內不存在,可以用rest參數代替
- 不可以使用yield命令,因此箭頭函數不能用作Generator函數
ES6 箭頭函數