📜  JavaScript |休息参数

📅  最后修改于: 2022-05-13 01:58:10.277000             🧑  作者: Mango

JavaScript |休息参数

休息参数是处理函数参数的一种改进方式,让我们可以更轻松地处理函数中的各种输入作为参数。剩余参数语法允许我们将不定数量的参数表示为一个数组。借助 rest 参数,可以使用任意数量的参数调用函数,无论它是如何定义的。在 ES2015 或 ES6 中添加了 Rest 参数,提高了处理参数的能力。
注意:为了运行本文中的代码,请使用浏览器提供的控制台或使用 repl.it 等在线工具。
句法:

function functionname(...parameters)   //... is the rest parameter (triple dots)
{
statement;
}

注意:当…在函数参数的末尾时,它是剩余参数。它将 n 个参数存储为一个数组。让我们看看 rest 参数是如何工作的:

Javascript
// Without rest parameter
function fun(a, b){
    return a + b;
}
console.log(fun(1, 2)); // 3
console.log(fun(1, 2, 3, 4, 5)); // 3


Javascript
// es6 rest parameter
function fun(...input){
    let sum = 0;
    for(let i of input){
        sum+=i;
    }
    return sum;
}
console.log(fun(1,2)); //3
console.log(fun(1,2,3)); //6
console.log(fun(1,2,3,4,5)); //15


javascript
// non-sense code
function fun(a,...b,c){
     //code
     return;
}


javascript
// rest with function and other arguments
function fun(a,b,...c){
    console.log(`${a} ${b}`); //Mukul Latiyan
    console.log(c);  //[ 'Lionel', 'Messi', 'Barcelona' ]
    console.log(c[0]); //Lionel
    console.log(c.length); //3
    console.log(c.indexOf('Lionel')); //0
}
fun('Mukul','Latiyan','Lionel','Messi','Barcelona');


输出:

在上面的代码中,即使我们传递的参数多于参数也不会引发错误,但只会评估前两个参数。在使用 rest 参数的情况下是不同的。通过使用 rest 参数,我们可以将任意数量的参数收集到一个数组中,然后用它们做我们想做的事情。
演示使用 rest 参数添加数字的 Javascript 代码。

Javascript

// es6 rest parameter
function fun(...input){
    let sum = 0;
    for(let i of input){
        sum+=i;
    }
    return sum;
}
console.log(fun(1,2)); //3
console.log(fun(1,2,3)); //6
console.log(fun(1,2,3,4,5)); //15                

输出:

当我们调用 fun()函数时,我们能够得到我们在参数中输入的所有元素的总和。我们通过使用 for..of 循环来获取数组中所有元素的总和,该循环用于遍历数组中的可迭代元素。
注意:其余参数必须是最后一个参数,因为它的工作是将所有剩余参数收集到一个数组中。因此,像下面的代码这样的函数定义没有任何意义,并且会引发错误。

javascript

// non-sense code
function fun(a,...b,c){
     //code
     return;
}

让我们在函数中使用 rest 参数和其他一些参数,如下所示:

javascript

// rest with function and other arguments
function fun(a,b,...c){
    console.log(`${a} ${b}`); //Mukul Latiyan
    console.log(c);  //[ 'Lionel', 'Messi', 'Barcelona' ]
    console.log(c[0]); //Lionel
    console.log(c.length); //3
    console.log(c.indexOf('Lionel')); //0
}
fun('Mukul','Latiyan','Lionel','Messi','Barcelona');

输出:

在上面的代码示例中,我们将剩余参数作为第三个参数传递,然后我们基本上用五个参数调用函数fun(),前两个被正常处理,其余的都被剩余参数收集,因此我们得到 ' Lionel' 当我们尝试访问c[0]时,同样重要的是要注意其余参数返回一个数组,我们可以利用 javascript 提供给我们的数组方法。