📜  JavaScript |函数参数(1)

📅  最后修改于: 2023-12-03 15:31:39.461000             🧑  作者: Mango

JavaScript 函数参数

在 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 中的函数参数是非常灵活的,我们可以通过默认参数和不定参数来方便地定义函数,而箭头函数则可以让代码更简洁。此外,尾调用优化还可以提高代码的性能,尤其在递归调用时。