1. 程式人生 > >ES6 箭頭函數

ES6 箭頭函數

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);

使用註意事項

  1. 函數體內的this對象就是定義時所在的對象,而不是使用時所在的對象
function Timer(){
    this.second=0;
    setInterval(()=>this.second++,1000);
}
var timer=new Timer();
setTimeout(()=>console.log(timer.second),3100);
//輸出結果為3而不是0,因為箭頭函數讓this總是指向Timer的實例對象
  1. 不可以當作構造函數
  2. 不可以使用arguments對象,該對象在函數體內不存在,可以用rest參數代替
  3. 不可以使用yield命令,因此箭頭函數不能用作Generator函數

ES6 箭頭函數