์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ ... ์ ์ด์ฉํ ์ ๊ฐ ๊ตฌ๋ฌธ(spread syntax)
๋ค๋ฅธ ๋ถ์ ์ฝ๋๋ฅผ ๋ณด๋ค๊ฐ ๋ฐฐ์ด์์ ... ์ ์ฌ์ฉํ ๊ฑธ ๋ณด๊ณ ๋ญ๊ฐ ์ถ์ด์ ์ฐพ์๋ณด๋ ์ ๊ฐ ๊ตฌ๋ฌธ(Spread syntax)๋ผ ๋ถ๋ฆฌ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ด ์์๋ค.
์์งํ ๋ญ๋ง์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค. ๋์ถฉ ๋ณต์์ ์๋ฆฌ๋จผํธ๋ค์ ํํํ ๋ ์ฐ์ธ๋ค๋ ๊ฒ ๊ฐ๋ค.
function sum(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
console.log(sum(...numbers));
// expected output: 6
์์ ๋ฅผ ๋ด๋ ์ธ์๋ก numbers๋ฅผ ์ ๋ฌํ๋ ๊ฒ๊ณผ ๋ฌด์จ์ฐจ์ด์ธ์ง ์์๊ฐ ์๋ค.
ํด์ค์ ๋ณด๋ spread syntax์ ํน์ง์ ์ด๋ ๋ค๊ณ ํ๋ค.
์๋ ์ ๋ฌํ๋ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด ๋ฑ์ ๋ด๊ฒจ์๋ ์์ ์๊ฐ ๋ช ๊ฐ์ธ์ง๋ ์๊ด์๋ค๋ ๊ฒ์ด๋ค.
์ ์์์์ ๋ฐฐ์ด์ ๋ด๊ธด ๊ฐ์ [1,2,3,4] ๋ก ๋๋ ค๋ sum์๋ 1,2,3๋ง ์ ๋ฌ๋์ด ๊ฒฐ๊ณผ๋ ๋์ผํ๊ฒ 6์ด ๋์จ๋ค.
ํํ ๋ก์ปฌ ๋ฐ์ดํฐ ์ ์ฅ์์ ์๋ก์ด ์์ดํ ์ ์ ์ฅํ ๋ ์ฐ์ด๊ฑฐ๋ ์๋กญ๊ฒ ์ถ๊ฐํ ํ ์ ์ฅ๋ ์์ดํ ์ ํ์ํ ๋ ์ฐ์ธ๋ค๊ณ ํ๋ค.
let numberStore = [0, 1, 2];
let newNumber = 12;
numberStore = [...numberStore, newNumber];
์ ์ฝ๋๋ฅผ ์ฝ์์์ ์คํํด๋ณด๋ฉด
numberStore์ ๋ ๋ฐฐ์ด์ด ํฉ์ณ์ง ๋ฐฐ์ด์ด ํ ๋น๋๋ ๊ฒ์ ์ ์ ์๋ค.
์์ ๊ฐ์ด ์๋ก์ด ๊ฐ์ ๊ณ์ํด์ ์ถ๊ฐํ๋ ์ฝ๋๋ฅผ ์งค ์๋ ์์ ๊ฒ ๊ฐ๋ค.
//For function calls:
// pass all elements of iterableObj as arguments to function myFunction
myFunction(...iterableObj);
// For array literals or strings:
// combine two arrays by inserting all elements from iterableObj
[...iterableObj, '4', 'five', 6];
// For object literals (new in ECMAScript 2018):
// pass all key:value pairs from an object
let objClone = {...obj};
spread syntax๋ ํนํ ๋ฐฐ์ด์์ ์๋ ฅ์ ๋ฐํํ๋ค.
push๋ splice๊ฐ์ API์์ด๋ ๋ฐฐ์ด์ ์์ ํ ์ ์๋ค.
let parts = ['shoulders', 'knees'];
let lyrics = ['head', ...parts, 'and', 'toes'];
// ["head", "shoulders", "knees", "and", "toes"]
์คํ๋ ๋๋ฅผ ์ด์ฉํ๋ฉด ์๋์ฒ๋ผ ๋ฐฐ์ด์ ๋ณต์ฌํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
let arr = [1, 2, 3];
let arr2 = [...arr]; // like arr.slice()
arr2.push(4);
// arr2 becomes [1, 2, 3, 4]
// arr remains unaffected
๋ concat()์ ๋์ฒด๊ฐ๋ฅํ๋ค.
let arr1 = [0, 1, 2];
let arr2 = [3, 4, 5];
// Append all items from arr2 onto arr1
arr1 = arr1.concat(arr2);
์ด ์ฝ๋๋ฅผ ์คํ๋ ๋๋ฅผ ์ด์ฉํ๋ฉด
let arr1 = [0, 1, 2];
let arr2 = [3, 4, 5];
arr1 = [...arr1, ...arr2];
// arr1 is now [0, 1, 2, 3, 4, 5]
// Note: Not to use const otherwise, it will give TypeError (invalid assignment)
์ด๋ ๊ฒ ์ธ ์ ์๋ค.
ํ์คํ ๋ฐฐ์ด์ ์๋ก์ด ์์ดํ ์ ์ถ๊ฐํ ๋๋ ์คํ๋ ๋๊ฐ ๊ฐ๊ฒฐํ๊ณ ์ฝ๋ค. ๊ทธ๋ ๋ค๋ฉด API์ ๋น๊ตํ์ ๋ ์ฅ๋จ์ ์ ๋ฌด์์ธ์ง๋ ๊ถ๊ธํด์ง๋๋ฐ ์ผ๋จ ์ค๋์ ์ฌ๊ธฐ๊น์ง๋ง..
๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ๋ณด๋ ์ต์คํ๋ก๋ฌ๋ง ์ฃฝ์ด์๋ ๋ชจ์ต.. ์ด์ ๋นจ๋ฆฌ ์ญ์ฌ์์ผ๋ก ์ฌ๋ผ์ง๊ธธ
๋๊ธ ์์ญ