ES6函數(shù)的擴(kuò)展

前言

ES6對函數(shù)進(jìn)行了擴(kuò)展,常用的大致有一下幾個方面
1、ES6允許為函數(shù)的參數(shù)設(shè)置默認(rèn)值;
2、引入了rest參數(shù)
3、函數(shù)中 擴(kuò)展運(yùn)算符的使用 '' ... ''
4、箭頭函數(shù)

1、ES6允許為函數(shù)的參數(shù)設(shè)置默認(rèn)值;

早前,如果想給函數(shù)的參數(shù)指定默認(rèn)值,一般使用短路表達(dá)式來實現(xiàn)。
//es5
function foo(x,y){
  x=x|| 'www';
  y=y||'qqq';
  console.log(x,y)
}
而在es6中允許為函數(shù)的參數(shù)設(shè)置默認(rèn)值,直接寫在參數(shù)定義的 后面即可
//es6
function foo(x='www',y='qqq'){
   console.log(x,y)
}
這樣的寫法,既簡潔,又能夠很容易區(qū)分哪些參數(shù)可以省略,但需要注意的是 設(shè)置的默認(rèn)值的參數(shù),在函數(shù)內(nèi)部是不能再次用 let const 聲明的。
function foo(x='www',y='qqq'){
   let x='sss' //error
   let y='ppp' //error
}

*函數(shù)參數(shù)默認(rèn)值和對象解構(gòu)賦值結(jié)合使用
function fetch(url,{body='',method='get',header={}}){
 console.log(method)
}
fetch('http://xxx.xxx.xx',{}) //get
上面的函數(shù)設(shè)置了對象解構(gòu)賦值的默認(rèn)值,當(dāng)函數(shù)第二個參數(shù)是 對象的時候,可以為對象的3個屬性設(shè)置默認(rèn)值,但這種寫法不能省略第二個參數(shù),省略了就會報錯
fetch('http://xxx.xxx.xx') //報錯
結(jié)合函數(shù)默認(rèn)值 可以解決這個隱患
function fetch(url,{body='',method='get',header={}} = {} ){
 console.log(method)
}
fetch('http://xxx.xxx.xx',{}) //get

2、引入了rest參數(shù)    function  foo(...變量名){}
rest 函數(shù)用于獲取函數(shù)的多余參數(shù),并且把這些參數(shù)轉(zhuǎn)成一個數(shù)組
結(jié)合 rest 參數(shù) 寫一個求和函數(shù)
function add(...values){
  let sum=0;
  for(var i of values){
    sum+=val
  }
return sum;
}
add(1,2,3,4)// 10
* rest 參數(shù)是 函數(shù)參數(shù)中最后一個參數(shù) 之后不能再加參數(shù)
function foo(a,...b,c){}  //報錯
*函數(shù)的length屬性不包括rest參數(shù)
*rest 參數(shù)中的變量代表一個數(shù)組,數(shù)組的操作方法 都可以用于這個變量。
3、函數(shù)中 擴(kuò)展運(yùn)算符的使用 '' ... ''
 擴(kuò)展運(yùn)算符 好比rest參數(shù)的逆運(yùn)算,將一個數(shù)組轉(zhuǎn)為用都好分割的參數(shù)序列.
主要用在函數(shù)調(diào)用中,

function push(arr,...items){
  arr.push(...items)
}

fucntion add(x,y){
 return x+y
}
var arr=[1,2];
add(...arr) //3
擴(kuò)展運(yùn)算符的應(yīng)用
1·合并數(shù)組
ES5
[1,2].concat(more)

ES6
[1,2,...more]
2·與解構(gòu)賦值結(jié)合

//ES5
a=list[0],b=list.slice(1)
//ES6
[a,...b]=list
3·任何類似數(shù)組的對象都都可以通過擴(kuò)展運(yùn)算符轉(zhuǎn)為真正的數(shù)組。
var arr=[...nn]
等同于 
Array.from()
4、箭頭函數(shù)
ES6允許使用箭頭   =>定義函數(shù)
var f=  v=> v;    
如果箭頭函數(shù)的代碼塊部分為一條語句 ,則可以省略return
等同于
var f=  v=> {return v}   
等同與
var f=function(v){return v;}

如果函數(shù)沒有參數(shù) 或者有多個參數(shù),就使用圓括號代表參數(shù)部分
 var f=  ()=> s;
 var f=  (num1,num2)=> num1+num2;
如果箭頭函數(shù)的代碼塊部分多于一條語句,就用大括號 擴(kuò)起來,并使用return 語句。
 var f=  (num1,num2)=>{return num1+num2;}
由于大括號被解釋為代碼塊,如果箭頭函數(shù)直接返回一個對象 則必須在對象外面加上括號
 var f= id =>({id:id,name:'aaa'})
 var f= id =>{ return{id:id,name:'aaa'}}
箭頭函數(shù)可以與變量解構(gòu)結(jié)合使用
const full= ({first,last})=>first+' '+last;
等同于
function full(params){
  return params.first+' '+params.last

**注意:
箭頭函數(shù)體內(nèi)的this 對象 就是定義時所在的對象,而不是使用時所在的對象,即this固定指向定義時所在的函數(shù),是不可變的
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 函數(shù)參數(shù)的默認(rèn)值 基本用法 在ES6之前,不能直接為函數(shù)的參數(shù)指定默認(rèn)值,只能采用變通的方法。 上面代碼檢查函數(shù)l...
    呼呼哥閱讀 3,703評論 0 1
  • 參考:ES6入門(阮一峰) 一、ES6為函數(shù)設(shè)置默認(rèn)參數(shù) ES6之前不能為函數(shù)設(shè)置默認(rèn)參數(shù),ES6新增可以為函數(shù)設(shè)...
    IceLake閱讀 777評論 0 0
  • 1.函數(shù)參數(shù)的默認(rèn)值 (1).基本用法 在ES6之前,不能直接為函數(shù)的參數(shù)指定默認(rèn)值,只能采用變通的方法。
    趙然228閱讀 829評論 0 0
  • 三,字符串?dāng)U展 3.1 Unicode表示法 ES6 做出了改進(jìn),只要將碼點(diǎn)放入大括號,就能正確解讀該字符。有了這...
    eastbaby閱讀 1,667評論 0 8
  • 一、ES6簡介 ? 歷時將近6年的時間來制定的新 ECMAScript 標(biāo)準(zhǔn) ECMAScript 6(亦稱 ...
    一歲一枯榮_閱讀 6,208評論 8 25

友情鏈接更多精彩內(nèi)容