美文网首页
ES6新标准之Rest

ES6新标准之Rest

作者: luckySnail | 来源:发表于2017-04-26 17:54 被阅读0次

    arguments只在函数内部起作用,是该函数调用者传入的所有参数。arguments是个类数组。将arguments转换为真正数组一般使用Array.prototype.slice.call(arguments),而rest参数接收函数多余的参数,形成的是一个真正的数组,可以直接应用sort, map等数组的方法

    因为js函数允许接收任意个参数,所以如果有需求要求获得除已定参数之外的所有参数,我们就得这么去写:

    var rest = [];

    function test(x,y) {

    let i ;

    let len = arguments.length;

    if (len > 2) {

    for (i = 2; i<len;i++){

    rest.push(arguments[i]);

    }

    }

    console.log(x,y);//1 2

    console.log(rest);//[3, 4, 5, 6]

    }
    test(1,2,3,4,5,6);

    这时候ES6的Rest实现起来就容易多了。(Rest参数必须写在形参的后面,用...标识)上面的函数函数可以改成下面这样:

    function test(x,y,...rest) {

    console.log(x,y);

    console.log(rest);

    }

    test(1,2,3,4,5,6);//结果:console.log(x,y);//1 2  ,  console.log(rest);//[3, 4, 5, 6]

    test(1);//结果:console.log(x,y);// 1 undefined  ,  console.log(rest);//[]


    传入函数的参数先绑定x和y,剩余的参数以数组的形式赋给了rest。如以上第二个test函数连正常的参数都没传满的时候, Rest则接收一个空数组。

    相关文章

      网友评论

          本文标题:ES6新标准之Rest

          本文链接:https://www.haomeiwen.com/subject/jcoizttx.html