函式小結

海航の燈塔發表於2020-09-26

1、【函式的定義】

1.1、JavaScript 使用關鍵字 function 定義函式。函式可以通過宣告定義,也可以是一個表示式。

1.2【函式的作用】

實現特定功能的程式碼,可複用。

1.3【函式的封裝】

即把可以實現一定功能的程式碼,封裝成一個函式。

1.4【函式的好處】

1、提高開發效率

2、複用,減少程式碼量

3、開發、維護、更靈活,把功能分開來寫,團隊開發效率高

4、引數、返回值,讓函式更靈活

 

1.4.【函式的三要素】

1. 函式名

2. 返回值return

               注:函式100%有返回值。

   注: 若寫了,則返回return後的內容。若沒寫return則返回undefined

注:return具備終止函式的功能。若需要返回多個值,需要return後面的內容是引用資料型別。

3.引數

1、形參(形式引數)

在函式宣告的時候

2、實參(實際引數)

在呼叫函式的時候

注:形參的個數比實參多,多的形引數為undefined。實參的個數比形參多,多的實引數不會使用。

 

2、【函式的宣告】

2.1字面量宣告function    F70    ()   {函式體}

2.2建構函式宣告let     F70     =     new Function();

 

3【呼叫函式(執行函式體)】

書寫格式:函式名 小括號

//    函式會不會執行不代表呼叫,執不執行取決於函式是否被呼叫

function serach() {

    console.log(`您的當餘額為1000`);

}

//  呼叫函式,此時才能執行{}中的console.log(`您的當餘額為1000`)

serach();

 

4、【匿名函式】

//函式表示式(匿名函式表示式)

let F70 = function F71() {

    console.log(`asdadasd`);

}

F70();//asdadasd

F71();//F71 is not defined

console.log(F70.name);//F71  (F70的名字是F71,但是呼叫的時候不能使用F71(),還是必須使用F70()呼叫,否則會報錯F71 is not defined)

 

5、【類陣列】

函式名.arguments

arguments是函式的屬性,返回所有的實參內容

可以類似於陣列的使用方式進行值的獲取

注:

1、形參和實參都寫在{}中

2、形參與實參一一對應

3、以形參接收為主,新參與實參可以同名,不能以name 與name 對比接收

4、函式的呼叫,在函式呼叫的時候是實參

 

let inputName = "YY"

let inputAge = 18;

let inputGender = ""

let hobby=1234

let num=1000

arr(inputNameinputAgeinputGender,hobby,num);

function arr(nameagegenderhobby) {

   //arr函式的宣告,在函式宣告的時候是形參。

   console.log(`你好

                   我叫${name}

                   今年${age}

                   我是${gender}

                   我的愛好是${hobby}

   `);

   //輸出所有實參內容

   console.log(arr.arguments);

   console.log(arr.arguments[arr.arguments.length-1]);

//    輸出所有實參的個數

   console.log(arr.arguments.length);//5

   //函式名.length 輸出的是形參的個數

   console.log(arr.length);//4

};

 

6、【不定引數  ...形參】

注:

1、接受多的實參內容(以陣列形式)

2、只能寫在最後一個形參位置(其他位置,會報錯)

function arr1(ab, ...c) {

    console.log(abc);

    console.log(arr1.length); //2

}

arr1(123456);//1 2 [ 3, 4, 5, 6 ]

function arr2(a, ...b,c) {

    console.log(abc);

    console.log(arr2.length);

}

arr2(123456);//報錯(Rest parameter must be last formal parameter)

 

7、【箭頭函式】

1、省略function關鍵字

2、如果只有一個形參,可以省略小括號

3、如果函式體只有一條語句,可以省略打括號

4、如果函式體只有一條語句,並且需要返回這條語句的結果。

       則可以省略return關鍵字

5、不可以使用arguments

6、不會把自己的this繫結到函式上

7、不可以用作建構函式

let arr1 = a => a + 1;

let arr2 = arr1(100);

console.log(arr2);//101

 

let arr3 = (ab, ...c=> {

    let f00 = a + b;

    return f00;

}

console.log(arr3(12)); //3

 

8、【回撥函式】

當一個函式A,提供給函式B當引數,則A就是回撥函式

function a(temp) {

    console.log("F70");

    temp();

 }

 function b() {

    console.log("F71");

 }

 a(b);//F70F71都會輸出

 

 

 

9、【陣列的排序】

9.1升序與降序

let arr3 = [130511850];

// 升序

let arr1 = arr3.sort((ab=> a - b);

console.log(arr1);//[ 1, 5, 8, 11, 30, 50 ]

// 降序

let arr2 = arr3.sort((ab=> b - a);

console.log(arr2);//[ 50, 30, 11, 8, 5, 1 ]

 

10、【陣列的方法every】

類似於"與",一假全假。

判斷陣列中的每個值,是不是都滿足需求

注:所有都滿足返回true,有1個不滿足,則返回false

let arr = [130511850];

let state = arr.every(a => a % 2 == 0);

console.log(state); //false

11、【陣列的方法some】

類似於"或",一真全真。

判斷陣列中的每個值,是不是都滿足需求

注:只要有1個滿足,就返回true,都不滿足才會返回false

let arr = [130511850];

state = arr.some(a => a % 2 == 0);

console.log(state); //true

12、【陣列的方法filter】

過濾。

返回滿足條件的值

let arr = [130511850];

let state = arr.filter(a => a % 2 == 0);

console.log(state); //[30,8,50]

13、【陣列的方法map】

遍歷陣列中的每個值,執行箭頭函式的操作,並把最終結果,已陣列的方式返回。

(有返回值)。

注:不會改變原陣列。

let arr = [130511850];

let state = arr.map(a => a % 2 == 0);//[ false, true, false, false, true, true ]

let state = arr.map(a => a-1);//[ 0, 29, 4, 10, 7, 49 ]

console.log(state);

 

14、【陣列的方法forEach】

遍歷陣列中的每個值,執行箭頭函式的操作,並把最終結果.

(無返回值)

注:不會改變原陣列,不能使用break

let arr = [130511850];

let state = arr.forEach(a => a-1);

console.log(state);//undefined(說明無返回值);

arr.forEach(a => { console.log(a - 1); });//0

                                          //29

                                          //4

                                          //10

                                          //7

                                          //49

 

15、【立即執行函式】

建立即呼叫,呼叫即銷燬

適用場景:關於一次性變數(時間)

(function F70() {

    console.log("F70");

})();

 

16、【交集、並集、差集】

16.1交集

let arr1 = [123];

let arr2 = [234];

let intersect = arr1.filter(a => arr2.includes(a));

console.log(intersect);//[2,3]

16.2並集

let arr1 = [123];

let arr2 = [234];

let union=new Set([...arr1,...arr2]);

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

16.3差集

let arr1 = [123];

let arr2 = [234];

let difference = arr2.filter(a => !arr1.includes(a));

console.log(difference);//4

 

相關文章