跳到主要内容

JavaScript 默认参数

提示
  1. ES6新特性:JavaScript的ES6版本引入了默认参数,允许为函数参数设定默认值。
  2. 表达式作为默认值:可以使用表达式作为默认值,但引用未初始化的参数会导致错误。
  3. 处理未定义值:在JavaScript中,向默认参数函数传递undefined时,函数将采用默认值。

在JavaScript的ES6版本中引入了默认参数的概念,这是一个新特性。它允许我们为函数参数设置默认值。我们来看一个例子,

function sum(x = 3, y = 5) {
// 返回和
return x + y;
}

console.log(sum(5, 15)); // 20
console.log(sum(7)); // 12
console.log(sum()); // 8

在上面的例子中,x的默认值是3y的默认值是5

  • sum(5, 15) - 当传递两个参数时,x5y15
  • sum(7) - 当向sum()函数传递7时,x7y取默认值5
  • sum() - 当没有参数传递给sum()函数时,x取默认值3y取默认值5

JavaScript中默认参数的工作方式

使用表达式作为默认值

也可以提供表达式作为默认值。

示例 1:传递参数作为默认值

function sum(x = 1, y = x, z = x + y) {
console.log(x + y + z);
}

sum(); // 4

在上述程序中,

  • x的默认值是1
  • y的默认值被设置为x参数
  • z的默认值是xy的和

如果您引用了尚未初始化的参数,将会出现错误。 例如,

function sum(x = y, y = 1) {
console.log(x + y);
}

sum();

输出

ReferenceError: Cannot access 'y' before initialization

示例 2:传递函数值作为默认值

// 在默认值表达式中使用函数

const sum = () => 15;

const calculate = function (x, y = x * sum()) {
return x + y;
};

const result = calculate(10);
console.log(result); // 160

在上述程序中,

  • 10传递给calculate()函数。
  • x变为10,而y变为150(sum函数返回15)。
  • 结果将是160

传递undefined值

在JavaScript中,当您将undefined传递给默认参数函数时,函数将取默认值。例如,

function test(x = 1) {
console.log(x);
}

// 传递undefined
// 取默认值1
test(undefined); // 1