一個函數(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ù)外部可見(反映)。