Programming/Javascript

[Javascript] Rest 파라미터

cbw1030 2019. 2. 18. 15:08
반응형

Rest 파라미터 구문은 정해지지 않은 수 인수를 배열로 나타날 수 있게 한다.

말이 어려우니 예시를 보도록 하자.

function sum(...theArgs) {

return theArgs.reduce(previous,current) {

return previous + current;

});

}


console.log(sum(1, 2, 3)); // expected output: 6 console.log(sum(1, 2, 3, 4)); // expected output: 10


함수의 마지막 인자 앞에 ... 를 붙여 모든 나머지 인수를 대체한다. 마지막 파라미터만 "Rest 파라미터" 가 될 수 있습니다.

function foo(a, b, ...theArgs) {

console.log(a);

console.log(b);

console.log(theArgs);

}


foo(1, 2, 3, 4, 5, 6, 7);

// expected output :

// a : 1

// b : 2

// theArgs = [3, 4, 5, 6, 7]

주의할 점이 있다. Rest 파라미터는 무조건 인자 마지막에 써야한다. 

function foo(...rest, a, b, c) {}; 이런식으로 사용할 수 없다. 



Rest 파라미터와 arguments의 차이

· arguments 객체는 실제 배열이 아니기 때문에 배열 메서드(map, forEach 등)를 사용할 수 없다.

· arguments 객체는 함수로 전달된 인자 모두를 포함한다.

· Rest 파라미터는 실제 배열로 배열 메서드를 사용할 수 있다.



arguments를 배열로 바꾸는 방법 3가지

function foo(a, b) {

// 첫 번째

var arr = Array.prototype.slice.apply(arguments);

// 두 번째

var arr = [].slice.apply(arguments);

// 세 번째

var arr = Array.from(arguments);


var first = arr.shift(); // 된다. 배열로 변했으므로 0번째 인자를 반환

}

위의 세 가지를 알고 있으면 코딩을 하는데 상당히 효율적일 것 같다.





p.s. 가끔 코드블럭에 주석을 달면 그 아랫줄도 주석처리가 되는거 같다. ..

반응형