一個函數(shù)可以具有一個或多個參數(shù),這些參數(shù)將由調(diào)用代碼提供并可以在函數(shù)內(nèi)部使用。
JavaScript是一種動態(tài)類型腳本語言,因此函數(shù)參數(shù)可以具有任何數(shù)據(jù)類型的值。
函數(shù)參數(shù)是函數(shù)定義中列出的名稱。
函數(shù)實參是傳遞給函數(shù)(并由函數(shù)接收)的實際值。
在定義函數(shù)以在運行時接受輸入值時,可以指定參數(shù)。
函數(shù)參數(shù)在函數(shù)定義的括號()中列出。
// 定義函數(shù) function greet(name) { document.write("Hello, " + name); } // 以“Seagull”作為參數(shù)調(diào)用greet函數(shù) greet("Seagull");測試看看?/?
您可以根據(jù)需要定義任意數(shù)量的參數(shù)。
// 定義函數(shù) function add(num1, num2, num3) { var total = num1 + num2 + num3; document.write(total); } // 調(diào)用函數(shù) add(5, 20, 10); // 輸出: 35 add(-5, 8, 7); // 輸出: 10測試看看?/?
但是,對于您指定的每個參數(shù),在調(diào)用函數(shù)時都需要將相應(yīng)的參數(shù)傳遞給該函數(shù),否則其值將變得不確定。
//定義函數(shù) function showFullname(fName, lName) { document.write(fName + " " + lName); } // 調(diào)用函數(shù) showFullname("Kavy", "Mark"); // 輸出: Kavy Mark showFullname("John"); // 輸出: John undefined測試看看?/?
如果未傳遞值或未定義,則默認函數(shù)參數(shù)允許使用默認值初始化命名參數(shù)。
這意味著,如果在調(diào)用函數(shù)時未提供任何參數(shù)來使用這些函數(shù),則將使用這些默認參數(shù)值。
function myFunc(a, b = 20) { // 如果未傳遞或未定義參數(shù)b,則b為20 return a + b; } myFunc(10, 5); // 返回 15 myFunc(10);// 返回 30測試看看?/?
JavaScript中的所有函數(shù)默認都可以使用arguments 對象。參數(shù)對象包括每個參數(shù)的值。
arguments對象是一個類似于object的數(shù)組。您可以使用類似于數(shù)組的索引來訪問其值。
下面的示例從傳遞的參數(shù)中返回最大數(shù)目:
getMax(9, 15, 61, 3); function getMax() { let max = 0; for(let i = 0; i < arguments.length; i++) { if (arguments[i] > max) { max = arguments[i]; } } return max; }測試看看?/?
以下示例返回所有傳遞的參數(shù)的總和:
getSum(9, 15, 61, 3); function getSum() { let sum = 0; for(let i in arguments) { sum += arguments[i]; } return sum; }測試看看?/?
即使函數(shù)不包含任何參數(shù),arguments對象也是有效的。
arguments對象是類似于對象的數(shù)組,但是,它不支持數(shù)組方法。
reset參數(shù)語法允許我們的參數(shù)數(shù)目不定傳遞給一個函數(shù)為一個數(shù)組。
當(dāng)您想將參數(shù)傳遞給函數(shù)但不知道需要多少個參數(shù)時,這特別有用。
通過在命名參數(shù)前面加上rest運算符(...)(即三個點)來指定rest參數(shù)。
function sum(...arr) { return arr.reduce((previous, current) => { return previous + current; }); } sum(1, 2); // 返回 3 sum(1, 2, 3, 4);// 返回 10 sum(1, 2, 3, 4, 5, 6); // 返回 21測試看看?/?
在函數(shù)調(diào)用中,參數(shù)是函數(shù)的參數(shù)。
JavaScript參數(shù)由值傳遞:該函數(shù)僅知道值,而不是參數(shù)的位置。
如果函數(shù)更改了參數(shù)的值,則不會更改參數(shù)的原始值。
對參數(shù)的更改在函數(shù)外部不可見(反映)。
在JavaScript中,對象引用是值。
因此,對象的行為就像通過引用傳遞一樣:
如果函數(shù)更改了對象屬性,它將更改原始值。
對對象屬性的更改在函數(shù)外部可見(反映)。