const meat = ["pork", "beef", "chicken"];
const veggie = ["tomato", "tomato", "beans"];
// veggie 와 meat 배열 내의 요소를 풀어 menu 배열에 추가하였다.
const menu = [...veggie, ...meat];
console.log(menu); // ["tomato", "tomato", "beans", "pork", "beef", "chicken"]
const origin = [1, 2, 3, 4, 5];
const swallowCopied = origin;
// ES5 이전에는 빈 배열을 만들고, concat 함수를 통해 깊은 복사 구현
const oldDeepCopied = [].concat(origin);
// ES6 이후부터는 Spread Operator를 사용하여 간단하게 깊은 복사 구현
const deepCopied = [...origin];
origin.push(6);
console.log(swallowCopied); // [1, 2, 3, 4, 5, 6]
console.log(deepCopied); // [1, 2, 3, 4, 5]
apply()
함수를 사용했음.function sum(a, b, c) {
console.log(a + b + c);
}
const arr = [1, 2, 3];
sum.apply(null, arr); // 6
sum(...arr); // 6
apply, call 함수의 차이점이란?
Function.prototype.apply()
함수의 경우 인자를 배열로 받아 함수를 호출.Function.prototype.call()
함수의 경우 여러 개의 인자를 받아 함수를 호출.const max = Math.max.apply(null, [5, 6, 2, 3, 7]);
const min = Math.min.call(null, 5, 6, 2, 3, 7);
console.log(max, min); // 7, 2
const name = {
firstName: "Baik",
lastName: "Gwangin",
};
const person = { age: 25, ...name };
console.log(person); // {age: 25, firstName: 'Baik', lastName: 'Gwangin'}
const fruits = ["apple", "banana", "lemon"];
// apple 변수에는 "apple" 가 할당된다. 나머지 요소의 경우 leftFruits 변수에 배열로 할당된다.
const [apple, ...left] = fruits;
console.log(apple); // apple
console.log(left); // ["banana", "lemon"]
// rest 연산자 이후 또 다른 변수를 할당시킬 수 없다.
const [apple, ...left, lemon] = fruits; // SyntaxError: rest element may not have a trailing comma
function callbackFunc(a, b, ...rest) {
console.log(a, b, rest);
}
callbackFunc(1, 2, 3, 4, 5); // 1, 2, [3, 4, 5]
callbackFunc(1, 2, 3); // 1, 2, [3]
callbackFunc(1, 2); // 1, 2, [] (빈 배열 할당)