ES6(ECMAScript 2015) ์์ ์๋ก ์๊ธด spread operator.
spread operator๋ ๋ฐ๋ณต ๊ฐ๋ฅํ(iterable) ๊ฐ์ฒด์ ์ ์ฉํ ์ ์๋ ๋ฌธ๋ฒ์ผ๋ก,
๋ฐฐ์ด์ด๋ ๋ฌธ์์ด ๋ฑ์ ๊ฐ๋ณ ์์๋ก ๋ถ๋ฆฌ์ํฌ ์ ์๋ค.
// ES6์์๋ ๋ฐฐ์ด์ ๋ํ ์คํ๋ ๋ ๋ฌธ๋ฒ ์ฌ์ฉ ๊ฐ๋ฅ
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];
์ฌ์ฉํ๋ ์ด์ ?๐ค
์๋ณธ๋ฐฐ์ด ๋๋ ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ก์ด ๋ณต์ฌ๋ณธ์ ๋ง๋ค๊ธฐ ์ํด์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด๋ ์ฐธ์กฐ์ ์ํด ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์
๊ทธ๋ฅ ๋์ ํ๋ฉด ์ฐธ์กฐ ์ฃผ์๋ง ๋ณต์ฌ๋์ด ๋ ๋ณ์๊ฐ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋จ.
์คํ๋ ๋ ๋ฌธ๋ฒ ์ฌ์ฉํ ๋ vs ์ฌ์ฉ์ํ ๋ ์ฐจ์ด์ ์?
// ์๋ณธ ๋ฐฐ์ด
const originalArray = [1, 2, 3];
// ์คํ๋ ๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด ๋ณต์ฌ
const copiedArray = [...originalArray];
// ์๋ก์ด ๋ฐฐ์ด์ ์์ ์ถ๊ฐ
copiedArray.push(4);
console.log(originalArray); // [1, 2, 3]
console.log(copiedArray); // [1, 2, 3, 4]
์ฌ๊ธฐ์ copiedArray ๋ originalArray ์ ๋ณต์ฌ๋ณธ์ด๋ฉฐ, ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ ๊ฒ์ด๋ค.
๋ง์ฝ ์คํ๋ ๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ง ์๊ณ ๊ทธ๋ฅ ๋์ ํ๋ค๋ฉด?
// ์๋ณธ ๋ฐฐ์ด
const originalArray = [1, 2, 3];
// ๋ฐฐ์ด์ ๊ทธ๋ฅ ๋์
const copiedArray = originalArray;
// ์๋ก์ด ๋ฐฐ์ด์ ์์ ์ถ๊ฐ
copiedArray.push(4);
console.log(originalArray); // [1, 2, 3, 4] <-- ์๋ณธ ๋ฐฐ์ด๋ ๋ณ๊ฒฝ๋จ
console.log(copiedArray); // [1, 2, 3, 4]
์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ณต์ฌํ๊ณ , ์์ ํ ์ ์๊ฒ๋๋ค.
Object ์์ฒด๋ iterable ๊ฐ์ฒด๊ฐ ์๋๋ฉฐ, ES6 ์์ ์๋์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํจ.
// ๊ฐ์ฒด์ ๋ํ ์คํ๋ ๋ ๋ฌธ๋ฒ์ ES6์์๋ ์ง์๋์ง ์์
const obj1 = { a: 1, b: 2 }; โ
// const obj2 = { ...obj1 }; // ์ด ๋ถ๋ถ์์ ์๋ฌ ๋ฐ์
๊ฐ์ฒด์์๋ ์คํ๋ ๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋๋ฐ, ES2018 ์์ ์๋ก ์ถ๊ฐ๋ ๊ฒ์ด๋ผ๊ณ ํ๋ค.
// ์๋ณธ ๊ฐ์ฒด
const originalObject = { name: 'John', age: 25 };
// ์คํ๋ ๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๋ณต์ฌ
const copiedObject = { ...originalObject };
// ์๋ก์ด ๊ฐ์ฒด์ ์์ฑ ์ถ๊ฐ ๋๋ ๋ณ๊ฒฝ
copiedObject.city = 'New York';
console.log(originalObject); // { name: 'John', age: 25 }
console.log(copiedObject); // { name: 'John', age: 25, city: 'New York' }
Javascript์์ Array์ Object ๋ Refernce Type์ด๋ฉด์, ๋์์ Mutable(๊ฐ๋ณ) Type ์ด๋ค.
Refernce Type์ ๊ฐ์ ์ ์ฅํ๋๊ฒ ์๋๋ผ, ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋ ์ฃผ์๋ฅผ ์ ์ฅํ๋ํ์ .
๋ฐ๋ผ์ ์๋ณธ ๋ฐฐ์ด ๋๋ ๊ฐ์ฒด๋ฅผ ๊ทธ๋๋ก ๋ณต์ฌ์, ๋ ๋ณ์๊ฐ ๊ฐ์ ์ฐธ์กฐ๋ฅผ ๊ฐ์ง๊ฒ ๋์ด ํ์ชฝ์ ์์ ํ๋ฉด ๋ค๋ฅธ์ชฝ๋ ์ํฅ์ ๋ฐ๊ฒ๋๋ค.
Mutable Type์ ๊ฐ์ด ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ฉฐ, ํ ๋ณ์๋ฅผ ํตํด ๋ณ๊ฒฝ๋ ๊ฐ์ ๋ค๋ฅธ ๋ณ์์์๋ ํ์ธ์ด ๊ฐ๋ฅํ๊ฒ.
์คํ๋ ๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ณต์ฌ๊ฐ์ ์๋ณธ๊ณผ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ํ ๋นํ๊ธฐ ๋๋ฌธ์
๋ณต์ฌ๋ณธ์ ๋ณ๊ฒฝํด๋, ์๋ณธ์ ์ํฅ์ ์ฃผ์ง์๋๋ค.
-> ์ด๊ฒ์ด Immutability(๋ถ๋ณ์ฑ) ์ ์ ์งํ๋ ๋ฐฉ๋ฒ์ค ํ๋์! ๋ถ๋ณ์ฑ์ ํ๋ก๊ทธ๋จ์ ์์ ์ฑ์ ๋์ด๋๋ฐ ๋์์ด๋๋ค.
'๐ป๊ฐ๋ฐ๊ณต๋ถ > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JS๊ธฐ์ด | Ajax, JSON ๊ฐ๋ ์ ๋ฆฌ ๋ฐ ํ์ฉ๋ฐฉ๋ฒ (0) | 2021.08.24 |
---|---|
JS | ๋์คํธ๋ญ์ฒ๋ง ํ ๋น (Destructuring) (0) | 2021.05.12 |