es6函數擴展

1、函數的擴展
1.函數參數的默認值
直接將默認值寫在形參以後,有默認值的形參要放在沒有默認值形參的後面
語法:
function fun(x,y='word'){
console.log(x,y);
}
fun('hello','nihao');
fun('hello');
2.函數參數與解構結合使用
function fun({x,y=5}={}){
console.log(x,y);
}
注意:該函數若是傳入對象,那麼就與傳入的對象進行解構,若是不傳任何內容,就與空對象進行解構
3.函數參數默認值的位置
若是函數有默認參數,這個默認值參數通常會是尾參數(放在最後),若是非尾參數設置了默認值,那麼這個參數必需要傳值,默認值將沒有意義
function fun(a,b=3,c){}
fun(1,2.3)
4.函數參數的位置
形參的個數:函數名.length
函數形參個數不包括有默認值的參數以及默認值參數之後的全部參數,也不包括rest參數(...rest);
實參個數:函數內部調用arguments.length
5.rest參數
es6引入的rest參數(...rest),主要用於接收形參可接收參數以外的多餘的實參,這樣咱們就不用使用arguments這個類數組了
rest參數是一個數組,多餘的實參都會存放進去
注意:若是一個函數有多個參數,無默認值獲得參數放在最前面,有默認值的參數放在中間,rest參數必定是在最後邊
數組解構與rest結合:
...[1,2,3]將該數組解構(拆開) 1,2,3
6.箭頭函數=》
1)語法:
沒有參數,函數體只有一句話
var f=()=>console.log(123);
===>
var f=function(){console.log(123)}
**************************************************************************************
只有一個參數。函數體只有一句話
var f2=a=>console.log(a);
===>
var f2=function(a){console.log(a)}
**************************************************************************************
若是有不少參數,函數體只有一句話
var f3=(a,b,c)=>console.log(a+b+c);
===>
function f3(a,b,c){console.log(a+b+c)};
****************************************************************************************
一個參數。函數體只有一個返回值
var f4=a=>a;//參數是a,返回值是a
===>
function f4(a){return a};
****************************************************************************************
一個參數,函數體有不少距話還包含返回值
var f5=a=>{
var b=a+2;
return b;
}
===>
function f5(a){
var b=a+2'
return b;
}
******************************************************************************************
即便調用函數 IIFE
var sum=(a=>a+a)(10)
==>
var sum=(function(a){return a+a})(10)
************************************************************************************************
一個參數,函數體一句話返回一個對象
es6規定大括號是一個代碼塊,不能直接返回一個代碼塊,一句話想要返回的話,必須是表達式
var fun =a=>{name:'lisi'}//錯誤X
將代碼塊降級爲表達式,使用小括號
var fun=a=>({name:'lisi'})//正確
===>
function fun(a){
return {name:'lisi'}
}
2)箭頭函數與解構結合
3)箭頭函數用於簡化回調函數
var arr=[1,2,3,4,5,6];
var arr1=arr.map(i=>i*i);
===>
var arr2=arr.map(function(i){return i*i})
4)rest參數與箭頭函數結合
5)注意事項:
1)函數體內部的this指向,指向函數的擁有者。箭頭函數自己沒有本身的this,全部的箭頭函數函數經過call,bind,apply調用時傳入的this,都是沒有效果的,箭頭函數的this,指向該函數被定義是所在的對象
事件處理函數,不能使用箭頭函數,由於其中的this不會指向事件源,而是指向箭頭函數定義時所在的環境對象
2)堅定不能使用箭頭函數聲明構造函數,也就是不能使用new運算符調用箭頭函數,
3)箭頭函數中沒有arguments對象,不可使用這個對象,若是須要使用,那麼使用rest參數(。。。rest)
4)箭頭函數嵌套es6

相關文章
相關標籤/搜索