淺談 es6 箭頭函數, reduce函數介紹


  今天來談一下箭頭函數, es6的新特性

   首先我們來看下箭頭函數長什么樣子,   

let result = (param1, param2) => param1+param2;

   上述代碼 按照以前書寫應該是 :

function add(param1, param2){
  return param1+param2;  
}

  當 只有一個參數時,還可以簡寫為:

let result = v => 5+v;

  箭頭函數不支持 arguments

  當有多個參數時,比如10個參數時, 我們就不能用arguments了,一種方法是 一一列舉出來,比較繁瑣, 還有一種方法是 用剩余參數表示 如下:

    這里先解釋一下 ” 剩余參數 “, MDN這樣描述: 如果函數的最后一個命名參數以...為前綴,則在函數被調用時,該形參會成為一個數組,數組中的元素都是傳遞給該函數的多出來的實參的值。

(param1, param2, ...rest)=>{//code} //...rest類型為數組,不包含param1,param2, rest.length表示剩余參數個數

    arg代表的是 數組[3,6,5]

  之前沒用箭頭函數寫promise時,代碼如下

  

function getRankData(){
	return getUsers(users)
	      .then(function(users){return users[1];})
		  .then(function(user){return user.id;})
		   .then(function(id){return data;})
		   .catch(function(err){return err.msg;})

}

  用箭頭函數簡化后,

function getUserRankData(){
	return getUsers(users)
		.then(users => users[1];)
		.then(user => user.id)
		.then(id => data)
		.then(err => err.msg;);
}

  當沒有參數時, 箭頭函數 () => {//code} 或者 _ => {//code}

 

  note: 簡單的、單行的、不會復用的函數,建議采用箭頭函數。如果函數體較為復雜,行數較多,還是應該采用傳統的函數寫法。

  當 用箭頭函數直接返回一個對象的時候 ()=>{name: 'test'} 會報錯 , 需要添加一個括號, () => ({name: 'test'});

  

  this 關鍵字

    箭頭函數內部的this是詞法作用域,由上下文確定。

  看到箭頭函數 經常和高階函數一起使用, 如下

    高階函數有兩個特性 : 函數可以作為參數傳遞, 函數可以作為返回值輸出  

var arr = [1,3,5,2,0];
var num = arr.map(ele => ele + 1)
	.filter(ele => ele > 3)
	.reduce((acc, ele) => acc + ele, 0)

  結果為10;

  介紹一下 reduce函數,對數組每個元素執行回調函數,返回值用於下一次計算參數,

    reduce(function(a,b,c,d) , 0);  reduce 有兩個參數 一個回調函數,一個參數, 當參數存在時, 即為a 的初始值, 之后a為回調返回的值, b為數組當前的元素, c為當前元素序號值, d為調用reduce的數組。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM