1. 程式人生 > 其它 >2021/1/5 js函式

2021/1/5 js函式

技術標籤:小白訓練javascript

函式

函式定義

JavaScript 使用關鍵字 function 定義函式。是為執行特定任務的程式碼塊。

會在某程式碼呼叫它時被執行

作用

1.簡化程式碼

2.方便維護

3.提高開發效率

4.提高了程式碼的複用性,減少程式碼冗餘

格式

function 函式名(引數…){

​ 函式執行的程式碼

}

【注意】函式先定義後呼叫

分類

1.內建函式(官方提供的函式,系統自身擁有函式)

​ alert();

​ document.write();

​ console.log();

​ parseInt();

​ parseFloat();

2.自定義函式

​ 根據引數和返回值的不同,可將函式分為四種。

​ 1.無引數無返回值

​ 2.有引數無返回值

​ 3.無引數有返回值

​ 4.有引數有返回值

函式的分類

引數:分為形參和實參。字面意思:形式引數和實際引數,理解為形式引數是實際引數的統稱,有點變數與變數名的意思。

返回值:對函式執行完成的結果的返回。用return。

return:結束當前函式,並將return後面的值(表示式/變數)作為函式的執行結果返回。

當我們需要對函式的運算結果進行不同的處理時,需要將函式的結果返回。

根據需求不同,使用不同的函式型別。

1.無引數無返回值

        // 求1-100的和,將結果輸出到頁面。
        function
sum() { var sum = 0; for (var i = 1; i <= 100; i++) { sum += i; } document.write(sum); } sum();

也就是在定義函式的時候函式名後邊沒有跟引數。一般在函式中的值都是確定的。

2.有引數無返回值

        // 求1-n的和,將結果輸出到頁面。
        function sum(n) {
            var sum = 0;
            for
(var i = 1; i <= n; i++) { sum += i; } document.write(sum); } sum(100);

在sum後面定義了引數n,當呼叫的時候再把引數傳進去。這樣引數變動的話修改比較容易,也不會出錯。

3.無引數有返回值

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-2zHA2Faq-1609937267939)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210105202749221.png)]

這時不需要在函式內輸出函式執行結果,只在有需要的時候進行呼叫輸出,可能在控制檯輸出、頁面彈出等不同的輸出方式。所以將函式執行結果先存放——用return和後面的值(表示式/變數)存放函式執行的結果。等需要呼叫輸出時,將表示式/變數賦值再輸出。

4.有引數有返回值

        // 求1-n的和。
        function sum(n) {
            var sum = 0;
            for (var i = 1; i <= n; i++) {
               sum += i;
            }
            return sum;
            // document.write(sum);
        }
       
        // 1.呼叫,將結果彈出
        var a = sum(100);
        // alert(a);
        // 2 呼叫,將結果輸出到頁面上
        document.write(a);
        // 3.呼叫 將結果輸出到控制檯。
        console.log(a);

封裝函式

函式封裝是一種函式的功能,它把一個或多個功能通過函式、類的方式封裝起來 對外只提供一個簡單的函式介面。
當寫程式的過程中需要執行同樣操作時,不需要再寫同樣的函式來呼叫,直接從函式庫裡面呼叫。

        // 1.確定函式的執行程式碼:函式體。
        // 2.找出變數(不確定值。),將其設定為形參
        // 3.如果需要對返回結果進行不同的處理,則定義返回值。
	    var arr = ["蘇軾", "辛棄疾", "李白"];
        function joint(arr) {
            var str = "";
            for (var i = 0; i <= arr.length - 1; i++) {
                str += arr[i];
                if (i == arr.length - 1) continue
                str += "|";
            }
            return str;
        }
        alert(joint(arr));

arguments

當定義一個函式,引數的數量不固定時使用arguments來儲存實參。相當於函式的實參都在arguments裡裝著,且arguments的長度是可以動態改變的。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-jpGcunzN-1609937267943)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210105204526949.png)]

作用域

作用域是指變數存在的範圍

分為全域性變數和區域性變數。

  1. 全域性變數

直接寫在Script標籤中的變數,在頁面中的任意位置都可以訪問到。

在頁面開啟建立,在頁面關閉時銷燬。

  1. 區域性變數

區域性變數是定義在函式內部的變數.這個變數只能在函式內使用.例外,函式中的形參也是區域性變數。

每一次呼叫時建立,呼叫結束會銷燬。

【注意】如果區域性變數與全域性變數重名,則使用區域性變數。若函式內部沒有找到該變數,則去全域性變數中查詢。

        
        console.log(b);
        //定義一個變數b,此時為全域性變數
        var b = 21;
        //定義一個函式
        function fun(b) {
            var a = 0;
            console.log(a);
            console.log(b);
        }
        fun(5);
        // console.log(b);
        // console.log(a);

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-U5L0aWlg-1609937267946)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210106204337203.png)]

遞迴

遞迴:函式之間可以互相呼叫,如果函式內部呼叫了其自身,則我們稱其為遞迴呼叫。通常情況下都不會用遞迴,因為非常容易出錯,會浪費電腦執行資源。但面試時可能會問到。

特點

  1. 函式自己呼叫自己

  2. 一般情況下還有引數

  3. 一般情況下有返回值.

方法

  1. 找這一次計算與上一次計算的關係。

  2. 呼叫自身

  3. 找到函式結束的條件。

        //  求n的階乘
        function fac(n) {
             if (n==1) {
                 return n;
             }
             return n*fac(n-1);
        }
        alert(fac(10));
        function fac2() {
            var result = 1;
            for (var i = 1; i <= 10; i++) {
                result *= i;
            }
            return result;
        }
        alert(fac2(10));