๐ก
rest operator๋ spread operator ์ ์ ์ฌ
spread operator ์ ๋์ผํ๊ฒ ...๋ณ์๋ช
์ ์ฌ์ฉ
| spread operator | rest operator |
|---|---|
| ๋ฐฐ์ด, ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ๊ฑฐ๋ ํฉ์น ๋ ์ฌ์ฉr | (1) ํจ์์ ๋งค๊ฐ๋ณ์ |
| (2) ๊ฐ์ฒด ๋ถํด ํ ๋น ์, ์ฌ๋ฌ ๊ฐ์ ๊ทธ๋ฃนํํ ๋ ์ฌ์ฉ |
spread operator
๋ฐฐ์ด, ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ๊ฑฐ๋ ํฉ์น ๋ ์ฌ์ฉ
rest operator
(1) ํจ์์ ๋งค๊ฐ๋ณ์
(2) ๊ฐ์ฒด ๋ถํด ํ ๋น ์, ์ฌ๋ฌ ๊ฐ์ ๊ทธ๋ฃนํํ ๋ ์ฌ์ฉ
function sum(numbers) {
return numbers.reduce((acc, cur) => acc + cur);
}
const result = sum([1, 2, 3, 4, 5]);
console.log(result); // 15
//////////////////์ ์๋๋ ๊ฐ๋ค! /////////////////////////
function sum(...numbers) {
return numbers.reduce((acc, cur) => acc + cur);
}
const result = sum(1, 2, 3, 4, 5); // []๋ก ๊ฐ์ธ์ ธ ์์ง ์์ง๋ง ...numbers๋ฅผ ์ฌ์ฉํ๋ฉด []๋ก ์ถ๋ ฅ
console.log(result); // 15
๊ฐ์ฒด ๋ฆฌํฐ๋ด์ด๋๋ฐฐ์ด ๋ฆฌํฐ๋ด์์ ๋จ์ ๋ถ๋ถ์ ํ๋์ ๋ณ์๋ก ๊ทธ๋ฃนํํ ๋ ์ฌ์ฉ => ์๋ฐ ์ฒ๋ฆฌ? ๐ฑ
์๋ฅผ ๋ค์ด, ํจ์์์ ์ฌ๋ฌ ์ธ์๋ฅผ ๋ฐฐ์ด๋ก ๊ทธ๋ฃนํํ๊ฑฐ๋, ๊ฐ์ฒด ๋ถํด ํ ๋น(destructuring)์์ ํน์ ์์ฑ์ ์ ์ธํ ๋๋จธ์ง ์์ฑ๋ค์ ์ ๊ฐ์ฒด๋ก ๊ทธ๋ฃนํํ ๋ ์ฌ์ฉ.
๊ฐ์ฒด ๋ฆฌํฐ๋ด(๋ฐฐ์ด ๋ฆฌํฐ๋ด)?์ค๊ดํธ{}, ๋๊ดํธ[]๋ฅผ ์ด์ฉํด ๊ฐ์ฒด/๋ฐฐ์ด์ ์ ์ธํ๋ ๋ฐฉ์. ๋ณ ๊ฑฐ ์ ๋ .
const person = {
name: "John",
age: 30,
country: "USA",
occupation: "Developer"
};
const { country, ...rest } = person;
console.log(rest); // { name: "John", age: 30, occupation: "Developer" }