JavaScript中的形參和實參指的是函數定義中聲明的參數和調用函數時傳遞給函數的參數。在JavaScript中,形參和實參是兩個不同的概念。
形參指的是在函數定義中聲明的參數,用于接收調用函數時傳入的實參值。形參只存在于函數內部,調用函數時不會將形參變量的值以任何形式傳遞給調用者。
例如:
function hello(name) {
console.log(`Hello, ${name}!`);
}
hello("Alice");
hello("Bob");
在上面的代碼中,`hello`函數定義了一個名為`name`的形參。當`hello("Alice")`和`hello("Bob")`被調用時,`"Alice"`和`"Bob"`將作為實參被傳遞給`name`形參。在`hello`函數中,`name`形參將打印出相應的值。
實參指的是調用函數時傳遞給函數的參數。實參可以是任何JavaScript值,包括數字、字符串、數組等。在調用函數時,實參的值將被賦給函數定義中對應的形參。
例如:function add(a, b) {
return a + b;
}
console.log(add(1, 2)); // 3
在上面的代碼中,`add`函數定義了兩個形參`a`和`b`。當`add(1, 2)`被調用時,`1`和`2`將作為實參傳遞給`add`函數,并將被賦值給形參`a`和`b`。函數執行后,`add`函數將返回`3`,結果將被打印出。
在JavaScript中,形參和實參的數量可以不相等。如果函數定義中聲明了形參,但調用函數時未傳遞相應的實參,則該形參將被賦值為`undefined`。
例如:function greet(name) {
if (name === undefined) {
console.log("Hello, stranger!");
} else {
console.log(`Hello, ${name}!`);
}
}
greet(); // "Hello, stranger!"
greet("Alice"); // "Hello, Alice!"
在上面的代碼中,`greet`函數定義了一個名為`name`的形參。當`greet()`函數被調用時,未傳遞任何參數給函數,因此`name`形參將被賦值為`undefined`,并將打印出`"Hello, stranger!"`。當`greet("Alice")`被調用時,`"Alice"`將作為實參傳遞給`name`形參,函數將打印出`"Hello, Alice!"`。
在JavaScript中,可以通過定義默認參數值為函數形參提供默認值。如果在調用函數時未傳遞實參,則將使用默認值。
例如:function greet(name = "stranger") {
console.log(`Hello, ${name}!`);
}
greet(); // "Hello, stranger!"
greet("Alice"); // "Hello, Alice!"
在上面的代碼中,`greet`函數定義了一個名為`name`的形參,并將其默認值設置為`"stranger"`。當`greet`函數被調用時,如果未傳遞任何參數,則默認參數將被使用,并將打印出`"Hello, stranger!"`。當`greet("Alice")`被調用時,`"Alice"`將作為實參傳遞給`name`形參,函數將打印出`"Hello, Alice!"`。
總之,形參和實參是JavaScript中函數中非常重要的概念。正確使用它們可以使函數更加靈活和易于使用,可以更好地滿足不同的編程需求。