π μ€λμ μ½λ©ν μ€νΈ μ°μ΅λ¬Έμ νλ€κ° spread λ¬Έλ²μ νμ©νλ©΄ λ μ’μ μ½λλ₯Ό μμ±ν μ μλ€λκ²μ μκ³ μ€νλ λ λ¬Έλ²μ λν΄ μ‘°κΈ λ μμΈν 곡λΆνκ³ μ velogμ μμ±ν΄λ³Έλ€.
μ€νλ λ λ¬Έλ²??
ES6μμ λμ λ μ€νλ λ λ¬Έλ²(μ κ°λ¬Έλ²) ...μ νλλ‘ λμ³μλ μ¬λ¬ κ°λ€μ μ§ν©μ νΌμ³μ
κ°λ³μ μΈ κ°λ€μ λͺ©λ‘μΌλ‘ λ§λ λ€.
- Spread Operator(μ€νλ λ μ°μ°μ, νΌμΉ¨ μ°μ°μ)λΌκ³ νλ€.
- μ€νλ λ μ°μ°μλ₯Ό μ¬μ©νλ©΄ λ°°μ΄, λ¬Έμμ΄, κ°μ²΄ λ± Iterable Objectλ₯Ό
κ°λ³ μμλ‘ λΆλ¦¬ν μμλ€.- μ€νλ λ λ¬Έλ²μ μ¬μ©ν μ μλ λμμ for of λ¬ΈμΌλ‘ μν κ°λ₯ν μ΄ν°λ¬λΈμ νμ λλ€.
console.log(...[1,2,3]) // 1 2 3
/* ...[1,2,3]μ [1,2,3]μ κ°λ³ μμλ‘ λΆλ¦¬νλ€. -> 1, 2, 3 */
const string = "JAVASCRIPT";
console.log(...string); // J A V A S C R I P T
/* λ¬Έμμ΄μ μ΄ν°λ¬λΈμ΄λ€. */
const object = {a:1, b:2, c:3}
console.log(...object);
/* TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function
μ΄λ κ² μ΄ν°λ¬λΈμ΄ μλ μΌλ° κ°μ²΄λ μ€νλ λ λ¬Έλ²μ λμμ΄ λ μ μλ€. */
/* μ΄μ κ°μ΄ ...[1, 2, 3]μ μ΄ν°λ¬λΈμΈ λ°°μ΄μ ν©μ³μ μμλ€μ κ°λ³μ μΈ κ°λ€μ λͺ©λ‘ 1 2 3μΌλ‘ λ§λ λ€.
1 2 3μ κ°μ΄ μλλΌ κ°λ€μ λͺ©λ‘μ΄λ€.μ€νλ λλ κ°μ μμ±νλ μ°μ°μμ μ°©κ°νλ©΄ μλλ€.
μ¦, μ€νλ λ λ¬Έλ²μ κ²°κ³Όλ κ°μ΄ μλλ―λ‘ λ³μμ ν λΉμ΄ λΆκ°νλ€. */
const list = ...[1,2,3];
// Uncaught SyntaxError: Unexpected token '...'
/* μ΄μ²λΌ μ€νλ λ λ¬Έλ²μ κ²°κ³Όλ¬Όμ κ°μΌλ‘ μ¬μ©ν μ μκ³ , λ€μκ³Ό κ°μ΄ μΌνλ‘ κ΅¬λΆν
κ°μ λͺ©λ‘μ μ¬μ©νλ λ¬Έλ§₯μμλ§ μ¬μ©ν μ μλ€. */
const arr = [1, 2, 3];
console.log(arr.concat([4, 5, 6]));
// ES5μμλ concatμ μ΄μ©νμ¬ [4,5,6]μ arrλ€μ μμλ‘ μΆκ°
const arr1 = [1, 2, 3];
console.log([...arr1, 4, 5, 6]); // [ 1, 2, 3, 4, 5, 6 ]
// ES6μμλ μ€νλ λ λ¬Έλ²μ ν΅ν΄ concatμ λ체νμ¬ arr1μ [4,5,6] μ μμλ₯Ό μΆκ°ν΄μ£Όμλ€.
var arr1 = [1, 4];
var arr2 = [2, 3];
arr1.splice(1, 0, arr2);
console.log(arr2); // [1,[2,3],4]
/* μμ μ½λλ‘ [1, 2, 3, 4]λ₯Ό λ§λ€κ³ μΆμμ§λ§ [1,[2,3],4] μ΄λ κ² λμ€κ²λλ€.
μ΄λ μ€νλ λ μ°μ°μλ₯Ό ν΅ν΄ μλμ²λΌ μμ±ν΄μ£Όλ©΄ λλ€. */
var arr1 = [1, 4];
var arr2 = [2, 3];
arr1.splice(1, 0, ...arr2);
console.log(arr1); // [1, 2, 3, 4]
var array = [1, 2];
var copy = array.slice();
console.log(copy); // [1, 2]
console.log(array === copy); // false
/* μμ μ½λμ μλ μ½λλ κ° μμλ₯Ό μμ 볡μ¬νμ¬ μλ‘μ΄ λ³΅μ¬λ³Έμ μμ±νλ€. */
var array = [1, 2];
var copy = [...array];
console.log(copy); // [1, 2]
console.log(array === copy); // false
/* μ€νλ λ λ¬Έλ²μ μ¬μ©νλ©΄ λμ± κ°κ²°νκ³ κ°λ
μ± μ’κ² ννν μ μλ€. */