一、函數的參數
? ? ? ? 1.形參和實參
? ? ? ? ? ? ? ? (1)在聲明函數時,可以在函數名稱后面的小括號中添加一些參數,這些參數被稱為形參,而在調用該函數時,同樣也需要傳遞相應的參數,這些參數被稱為實參
參數 | 說明 |
形參 | 形式上的參數,函數定義的時候傳遞參數,當前并不知道是什么 |
實參 | 實際上的參數,函數調用的時候傳遞的參數,實參是傳遞給形參的 |
? ? ? ? ? ? ? ? (2)參數的作用:在函數內部某些值不能固定,我們可以通過參數在調用函數時傳遞不同的值進去
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>// 1. 函數可以重復相同代碼function cook() {console.log('Hello word1');}cook();cook();// 2. 我們可以利用函數的參數實現函數重復不同的代碼// function 函數名(形參1,形參2...) { // 在聲明函數的小括號里面是 形參 (形式上的參數)// }// 函數名(實參1,實參2...); // 在函數調用的小菊哦好里面是實參 (實際參數)// 3. 形參和實參的執行過程function cook(aru) { // 形參是接受實參的 aru = 'Hello word1' 形參類似于一個變量console.log(aru);}cook('Hello word1');cook('Hello word2');cook('Hello word3');// 4. 函數的參考可以有,也可以沒有 個數不限</script>
</head><body></body></html>
? ? ? ? 2.函數形參和實參個數不匹配的問題
參數的個數 | 說明 |
實參個數等于形參個數 | 輸出正常結果 |
實參個數多余形參個數 | 只取到形參的個數 |
實參個數小于形參個數 | 多的形參定義為undefined 結果為NaN |
? ? ? ? ? ? ? ? (1)在Javascript中,形參的默認值是undefined
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>// 函數形參實參個數匹配function getSum(num1, num2) {console.log(num1 + num2);}// 1. 如果實參的個數和形參的個數一致 則正常輸出結果getSum(1, 10);// 2. 如果實參的個數多余形參的個數 會取到形參的個數getSum(1, 5, 1);// 3. 如果實參的個數小于形參的個數 多于的形參定義為undefined 最終的結果是 NaN// 形參可以看作是不用聲明的變量 num2 是一個變量但是沒有接受值 結果就是undefinedgetSum(1); // NaN// 建議 我們盡量讓實參的個數和形參相匹配</script>
</head><body></body></html>
二、參數的小結
? ? ? ? 1.函數可以帶參數也可以不帶參數
? ? ? ? 2.聲明函數的時候,函數包括號里面的是形參,形參的默認值是undefined
? ? ? ? 3.調用函數的時候,函數名括號里面的是實參
? ? ? ? 4.多個參數中間用逗號隔開
? ? ? ? 5.形參的個數可以和實參個數不匹配,但結果不可預計,我們盡量相匹配
三、函數的返回值
? ? ? ? 1.return語句
????????????????有的時候,我們希望函數將值返回給調用者,此時用過使用 return 語句就可以實現
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>// 1. 函數是做某件事情或者實現某種功能// function cook(aru) {// console.log(aru);// }// cook('大肘子');// 2. 函數的返回值格式// function 函數名() {// return 需要返回的結果;// }// 函數名();// (1) 我們需要函數只是實現某種功能,最終的結果需要返回給函數的調用者函數名() 通過return 實現的// (2) 只要函數遇到return 就把后面的結果 返回給函數的調用者 函數名() = return 后面的結果、// 3. 代碼驗證function getResult() {return 'Helloword';}getResult(); // getResult() = Hellowordconsole.log(getResult());// function cook(aru) {// return aru;// }// console.log(cook('紅燒肉'));// 4. 求任意兩個數的值function getSum(num1, num2) {return num1 + num2;}console.log(getSum(1, 5));</script>
</head><body></body></html>
? ? ? ? 2.return終止函數
????????????????return 語句之后的 代碼不被執行
? ? ? ? 3.return的返回值
????????????????return 只能返回一個值,如果用逗號隔開多個值,以最后一個為準
? ? ? ? 4.函數沒有return返回undefined
????????????????函數都是有返回的
????????????????如果有return則返回return后面的值
????????????????如果沒有return則返回undefined
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>// 函數返回值注意事項// 1. return 終止函數function getSum(num1, num2) {return num1 + num2; // return 后面的代碼不會被執行alert('我是不會被執行的')}console.log(getSum(1, 2));// 2. return 只能返回一個值function fn(num1, num2) {return num1, num2;// 返回的結果時最后一個值}console.log(fn(1, 2));// 3. 我們求任意兩個數的 加減乘除結果function getResult(num1, num2) {return [num1 + num2, num1 - num2, num1 * num2, num1 / num2]}var re = getResult(10, 5); // 返回的是一個數組console.log(re);// 4. 我們的函數如果有return 則返回的是 return 后面的值,如果函數沒有 return 則返回undefiedfunction fun1() {return 'Hello word';}console.log(fun1()); // Hello wordfunction fun2() {}console.log(fun2()); // 函數返回的結果是undefined</script>
</head><body></body></html>
? ? ? ? 5.break、continue、return的區別
????????????????break:結束當前的循環體(比如for、while)
????????????????continue:跳出本次循環,繼續執行下次循環(如for、while)
????????????????return:不僅可以退出循環,還能夠返回return語句中的值,同時還可以結束當前的函數體內的代碼