📅  最后修改于: 2023-12-03 15:31:39.461000             🧑  作者: Mango
在 JavaScript 中,函数参数是指在函数定义时,用来接收传入函数的值的变量。JavaScript 中的函数可以接收任意数量的参数,包括 0 个参数。
在 JavaScript 中,函数使用 function
关键字定义,函数参数用括号括起来,多个参数用逗号分隔。函数体可以包含一些操作,最后可以返回一个值,也可以不返回值。
下面是一个简单的函数定义:
function greet(name) {
console.log(`Hello, ${name}!`);
}
这个函数接收一个参数 name
,并在控制台输出 "Hello, ${name}!"
。我们可以调用这个函数:
greet("World"); // 输出 "Hello, World!"
在 ES6 中,我们可以给函数的参数指定默认值,当函数没有传入参数时,就会使用默认值。
function greet(name = "World") {
console.log(`Hello, ${name}!`);
}
greet(); // 输出 "Hello, World!"
greet("Alice"); // 输出 "Hello, Alice!"
在 JavaScript 中,我们可以使用不定参数来接收不确定数量的参数。不定参数使用三个点 ...
来定义,表示它可以接收多个参数。不定参数实际上是一个数组。
function sum(...numbers) {
let result = 0;
for (let number of numbers) {
result += number;
}
return result;
}
sum(1, 2, 3); // 返回 6
sum(1, 2, 3, 4, 5); // 返回 15
在 ES6 中,我们还可以使用箭头函数来定义函数。箭头函数的参数和函数体的语法和普通的函数相同,但是箭头函数没有自己的 this
,它会继承它所在上下文的 this
值。
const greet = name => console.log(`Hello, ${name}!`);
greet("World"); // 输出 "Hello, World!"
在函数调用中,一个函数调用结束后需要返回到原来调用它的函数的上下文中,这样才能继续执行代码。如果一个函数的最后一个操作是另一个函数的调用,那么这个函数可以进行尾调用优化(TCO),不会增加额外的栈空间。
function fn1() {
return fn2();
}
function fn2() {
return fn3();
}
function fn3() {
return "done";
}
fn1(); // 直接返回 "done",不需要额外的栈空间
JavaScript 中的函数参数是非常灵活的,我们可以通过默认参数和不定参数来方便地定义函数,而箭头函数则可以让代码更简洁。此外,尾调用优化还可以提高代码的性能,尤其在递归调用时。