无涯教程-ES6 - 默认参数

72 阅读1分钟

默认参数的概念是 ES6 版本的JavaScript中引入的一项新函数。这使无涯教程可以为函数参数提供默认值。

function sum(x = 3, y = 5) {


//return sum
return x + y;
}




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

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

在上面的示例中,x的默认值为 3 ,而y的默认值为 5

  • sum(5,15)  - 传递两个参数时,x占用 5 ,而y占用 15
  • sum(7)          - 将 7 传递给sum()函数时,x需要 7 和y采用默认值 5
  • sum()            - 当没有参数传递给 sum()函数时,x采用默认值 3 ,然后y采用默认值 5
How default arguments work in JavaScript
默认参数在 JavaScript 中的工作原理

表达式默认值

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

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

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


sum();//4

sum();//4

在上面的程序中,

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

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

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


sum(); 

sum();

Output
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

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

在上面的程序中,

  • 10 传递给 calculate()函数。
  • x 变为 10 y 变为 150 (求和函数返回 15 )
  • 结果将为 160

传递未定义值

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

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


// passing undefined
// takes default value 1
test(undefined);//1

// passing undefined // takes default value 1 test(undefined);//1

参考链接

www.learnfk.com/es6/default…