es6之函式擴充套件

2022-06-16 07:36:09 字數 1880 閱讀 4407

預設值

let defaulta=(x,y=5,c)=>(x+y+c)

console.log(defaulta(1,2,3));//

6console.log(defaulta(1,2));//

nan

let defaulta=(x,y,c=4)=>(x+y+c)

console.log(defaulta(1,2));//

7

有預設值的作用域

一旦設定了引數的預設值,函式進行宣告初始化時,引數會形成乙個單獨的作用域(context)。等到初始化結束,這個作用域就會消失。這種語法行為,在不設定引數預設值,是不會出現的

這段話主要state了3個事實:

①函式引數有預設值時,會在宣告初始化階段形成乙個單獨的作用域

②這個作用域在初始化結束後消失

③沒預設值的情況下,沒有①②的現象發生。

function f1(x,y=x);

f1(1);//

1 1f1(1,2);//

1 2f1();//

undefined undefined

function f1(x,y=cc);

f1(1,2); //

1 2f1(1);//

報錯 cc is not defined

let cc=1;

f1(1);//

1 1f1();//

undefined 1

rest引數

(形式為...變數名),用於獲取函式的多餘引數,這樣就不需要使用arguments物件了。

function

restdemo(...values)

return

sum;

}console.log(restdemo(1,2,3));

rest 引數必須是最後乙個引數,否則會報錯

function

f(a, ...b, c)

console.log(f(1, 2, 3));//

報錯uncaught syntaxerror: rest parameter must be last formal parameter

rest引數是陣列

function

f(a, ...b)

f(1, 2, 3);

函式的length屬性,不包括 rest 引數

function

f(a, ...b)

console.log(f.length);

//1

...應用

console.log(...[1,2,4])//

1 2 4

console.log(4,...[1,2,3])//

4 1 2 3

箭頭函式

()=》{}

當函式體只有一行時,可以簡化為 x=>x , 

其相當於function(x)

(x,y)=>x+y   其相當於function(x+y)

let func=x=>

func(1);//

執行不會有任何結果,因為多行,沒有返回值

//正確操作

func=x=>

func(1); //

6 多行需要主動return

偽呼叫

function

fx(x)

fx(123) //

tail 123

}

ES6 函式擴充套件

函式在js裡是相當重要的一部分了,es6裡也新增了一些函式方法,來看一下 test hello hello world test hello kill hello kill es6增加了函式引數預設值,可以直接在宣告引數的同時賦預設值,但是也可以後面重新賦值 test2 kill 括號內有引數x時,...

ES6函式擴充套件

函式引數的預設值 在es5中,我們想給函式乙個預設值,需要這樣寫 function add x,y 在es6中 可以這樣寫 function add x,y ss add dd ddss add ss dd ssdd add dd dd我們只需要在引數上直接寫上我們想要的預設值就好了。當我們給函式乙...

ES6函式擴充套件

function fun a,b world fun hello 輸出helloworld let a aa function fun a,b a fun bb function fun arg fun 1,2,3,4,1 語法 param param 對應函式 function 沒有引數 乙個引數...