ES6 ์ฃผ์ ๋ฌธ๋ฒ; spread/rest๋ฌธ๋ฒ, ๊ตฌ์กฐ ๋ถํด ํ ๋น(destructing)
const numbers = [1, 2, 3];
console.log(...numbers) // 1 2 3
**sum(...numbers) // (1, 2, 3) ๋ฐฐ์ด -> ๋๋ฒ๋ก ํ์ด์ค๋ค.
**function sum(x, y, z) {
return x + y + z; // numbers.[0] + numbers.[1] + numbers.[2]
}
sum(...numbers) // 6
function sum(...Args) { // ์ ๋ฌ์ธ์(1, 2, 3) => [1, 2, 3]
return Args.reduce((previous, current) => {
return previous + current;
});
}
sum(1, 2, 3) // 6
let word = ['a', 'b', 'c'];
let Alphbet = [...word, 'd'];
Alphbet; // ['a', 'b', 'c', 'd']
let word1 = ['a', 'b', 'c'];
let word2 = [...word];
word2.push('d'); // 4
word2; // ['a', 'b', 'c', 'd']
word1; // ['a', 'b', 'c']
let user1 = { name: 'anna', age: '25' };
let user2 = { name: 'mary', gender: 'female' };
let Cloneuser1 = {...user1};
let Mergeusers = {...user1, ...user2};
console.log(Cloneuser1); // { name: 'anna', age: '25' };
console.log(Mergeusers); // { name: 'mary', age: '25', gender: 'female' };
function number(a, b, ...manyMoreArgs) {
console.log("1", a);
console.log("2", b);
console.log("manyMoreArgs", manyMoreArgs);
}
number("one", "two", "three", "four", "five", "six");
//1 one 2 two ['three', 'four', 'five', 'six']
const [a, b, ...rest] = [1, 2, 3, 4, 5];
// ๋ณ์ a, b, rest์ ๊ฐ ๊ฐ์ ํ ๋น
console.log(a); // 1
console.log(a); // 2
console.log(rest); // [3, 4, 5]
const {a, b, ...rest} = {a: 1, b: 2, c: 3, d: 4, e: 5};
// ๋ณ์ a, b์ ๊ฐ๋ง ํ ๋น / ๋ณ์ rest์ ๊ฐ์ฒด๋ก ํ ๋น
console.log(a); // 1
console.log(a); // 2
console.log(rest); // {c: 3, d: 4, e: 5}