为什么我必须在下面的示例中同时使用rest参数和spread运算符?

时间:2016-08-01 06:07:43

标签: javascript ecmascript-6

ts.forEachChild

预期产出:

function f(...y){
      y.forEach(v => {
        console.log("111");
        console.log(v);
      });
    }

var z=["a","b","c","d","e","f"];

f(z);

实际输出:

"111"
"a"
"111"
"b"
"111"
"c"
"111"
"d"
"111"
"e"
"111"
"f"

只有当我将行"111" ["a", "b", "c", "d", "e", "f"] 更改为f(z)时,才能获得预期的输出。我是ECMAScript 2015的新手。请告诉我这里缺少什么。

1 个答案:

答案 0 :(得分:3)

f(z)表示只有一个参数(在本例中为数组)传递给方法,而f(...z)表示,数组中的值作为参数传递给函数。

阅读更多:

  1. Spread operator
  2. Rest parameters
  3. function f(...y){
          console.log(y.length);
        }
    
    var z=["a","b","c","d","e","f"];
    f(z);
    f(...z);