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

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

   首先咱們來看下箭頭函數長什麼樣子,   javascript

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

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

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

  當 只有一個參數時,還能夠簡寫爲:es6

let result = v => 5+v;

  箭頭函數不支持 arguments

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

    這裏先解釋一下 」 剩餘參數 「, MDN這樣描述: 若是函數的最後一個命名參數以...爲前綴,則在函數被調用時,該形參會成爲一個數組,數組中的元素都是傳遞給該函數的多出來的實參的值。promise

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

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

  以前沒用箭頭函數寫promise時,代碼以下this

  

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

}

  用箭頭函數簡化後,rest

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

  當沒有參數時, 箭頭函數 () => {//code} 或者 _ => {//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的數組。

相關文章
相關標籤/搜索