πŸ“š μ˜€λŠ˜μ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅λ¬Έμ œ ν’€λ‹€κ°€ spread 문법을 ν™œμš©ν•˜λ©΄ 더 쒋은 μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆλ‹€λŠ”κ²ƒμ„ μ•Œκ³  μŠ€ν”„λ ˆλ“œ 문법에 λŒ€ν•΄ 쑰금 더 μžμ„Ένžˆ κ³΅λΆ€ν•˜κ³ μž velog에 μž‘μ„±ν•΄λ³Έλ‹€.

μŠ€ν”„λ ˆλ“œ 문법??
ES6μ—μ„œ λ„μž…λœ μŠ€ν”„λ ˆλ“œ 문법(μ „κ°œλ¬Έλ²•) ...은 ν•˜λ‚˜λ‘œ λ­‰μ³μžˆλŠ” μ—¬λŸ¬ κ°’λ“€μ˜ 집합을 νŽΌμ³μ„œ
κ°œλ³„μ μΈ κ°’λ“€μ˜ λͺ©λ‘μœΌλ‘œ λ§Œλ“ λ‹€.

  1. Spread Operator(μŠ€ν”„λ ˆλ“œ μ—°μ‚°μž, 펼침 μ—°μ‚°μž)라고 ν•œλ‹€.
  2. μŠ€ν”„λ ˆλ“œ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ λ°°μ—΄, λ¬Έμžμ—΄, 객체 λ“± Iterable Objectλ₯Ό
    κ°œλ³„ μš”μ†Œλ‘œ 뢄리할 μˆ˜μžˆλ‹€.
  3. μŠ€ν”„λ ˆλ“œ 문법을 μ‚¬μš©ν•  수 μžˆλŠ” λŒ€μƒμ€ 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 '...'

/* 이처럼 μŠ€ν”„λ ˆλ“œ λ¬Έλ²•μ˜ 결과물은 κ°’μœΌλ‘œ μ‚¬μš©ν•  수 μ—†κ³ , λ‹€μŒκ³Ό 같이 μ‰Όν‘œλ‘œ κ΅¬λΆ„ν•œ
κ°’μ˜ λͺ©λ‘μ„ μ‚¬μš©ν•˜λŠ” λ¬Έλ§₯μ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆλ‹€. */


✍ concat을 λŒ€μ²΄ν•˜μ—¬ μŠ€ν”„λ ˆλ“œ λ¬Έλ²•μœΌλ‘œ

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] 의 μš”μ†Œλ₯Ό μΆ”κ°€ν•΄μ£Όμ—ˆλ‹€.

✍ spliceλ₯Ό λŒ€μ²΄ν•˜μ—¬ μŠ€ν”„λ ˆλ“œ λ¬Έλ²•μœΌλ‘œ

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]

✍ sliceλ₯Ό λŒ€μ²΄ν•˜μ—¬ μŠ€ν”„λ ˆλ“œ λ¬Έλ²•μœΌλ‘œ

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
/* μŠ€ν”„λ ˆλ“œ 문법을 μ‚¬μš©ν•˜λ©΄ λ”μš± κ°„κ²°ν•˜κ³  가독성 μ’‹κ²Œ ν‘œν˜„ν•  수 μžˆλ‹€. */

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보