function sum (x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
sum(...numbers) // 6
...
"을 붙이면 모든 후속 매개변수를 배열에 넣도록 지정합니다. 마지막 매개변수만 나머지 매개변수로 설정할 수 있습니다....
만 존재할 수 있고, 나머지 매개변수는 반드시 정의의 마지막 매개변수여야 합니다. function sum(...theArgs) {
return theArgs.reduce((previous, current) => {
return previous + current;
});
}
sum(1, 2, 3) // 6
sum(1, 2, 3, 4) //10
☘️ 나머지 매개변수(rest)와 전개구문(spread)는 비슷해보이지만, rest는 배열이나 객체를 분해할 때 사용되고 spread는 배열이나 문자열에 사용됩니다. 또 spread는 '확장'하는 반면 rest는 '압축'하는 면에서 반대라고 할 수 있습니다.
let arr1 = [0, 1, 2];
let arr2 = [3, 4, 5];
arr1 = [...arr1, ...arr2];
// [0, 1, 2, 3, 4, 5]
let arr = [1, 2, 3];
let arr2 = [...arr]; // slice()와 유사
arr2.push(4); // [1, 2, 3, 4]
let obj1 = {foo: 'bar', x: 42};
let obj2 = {foo: 'baz', y: 13};
let clonedObj = { ...obj1 };
let mergedObj = { ...obj1, ...obj2 };
//{foo: 'baz', x: 42, y: 13}
function myFun(a, b, ...manyMoreArgs) {
console.log("a", a); // a, one
console.log("b", b); /// b, two
console.log("manyMoreArgs", manyMoreArgs);
}
myFun("one", "two", "three", "four", "five", "six");
//a, one
//b, two
//['three', 'four', 'five', 'six']
const [a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a); // 10
console.log(b); // 20
console.log(rest); //30, 40, 50
undefined
일 때 그 값을 대신 사용합니다. var a, b;
[a=5, b=7] = [1]; // -> 1, undefined 인 셈
console.log(a); //1
console.log(b) // 7 -> 기본값인 b= 7이 나온다.
[a, b] = [b, a]
function f() {
return [1, 2];
}
//위와 아래가 같다.
var a, b;
[a, b] = f();
function f() {
return [1, 2, 3];
}
var [a, ,b] = f(); //2를 건너뛰도록 작성
console.log(b); // 3
const [a, b, ...rest] = {a: 10, b: 20, c: 30, d: 40}
console.log(a); // 10
console.log(b); // 20
console.log(rest); //{c: 30, d: 40}
const
, let
, var
)과 함께 사용하지 않으면 에러가 발생합니다. undefined
인 경우, 변수에 기본값을 할당할 수 있습니다. var {a: aa = 10, b: bb = 5} = {a: 3};
console.log(aa); //3
console.log(bb); //5
☞ 자세한 내용