λ°°μ΄μ μλ μμλ₯Ό λ°°μ΄ λͺ
μμ μ μΈκ° λΆνλ κ²μΌλ‘ λ¬Έμμ΄λ‘ νΈμΆνλ€.
λ°°μ΄λΌλ¦¬ ν©μΉκ±°λ λ°°μ΄κΉμ§ 볡μ¬νλλ° μ¬μ©ν μ μμΌλ©° 볡μ¬νκ±°λ ν©μ³μ§ λ°°μ΄λ€μ μμ 볡μ¬κ° λλ©° μ κ° κ΅¬λ¬Έμ μ λ°°μ΄μ μν₯μ΄ κ°μ§ μλ Immutableν λ¬Έλ²μ΄λ€.
// λ°°μ΄ ν©μΉκΈ° μμ let a = [1, 2, 3]; let b = [4, 5, 6]; let ab = [...a, ...b]; let ba = [...b, ...a]; console.log(ab) // [1, 2, 3, 4, 5, 6]; console.log(ba) // [4, 5, 6, 1, 2, 3]; // λ°°μ΄ λ³΅μ¬ μμ let a = [1 ,2 ,3] let b = [..a] // a.slice()μ λΉμ·νλ€. b.pop(); // 3; console.log(b) // [1, 2] console.log(a) // [1, 2, 3]; λ°°μ΄ bμ μμκ° μμ λμμ§λ§ μ λ°°μ΄ aμ μμλ λ³ν¨μ΄ μλ€. // λ€λ§ μμ 볡μ¬(shallow copy)μ΄κΈ°μ λ°°μ΄μ μμλ‘ κ°μ²΄, λ°°μ΄λ±μ΄ μ¬λ // κ·Έ ν΄λΉ μμλ€μλ ν΄λΉ μμμ λ°μ΄ν°κ° μλ Heapμ μ£Όμλ§ μ μ₯λλ€.
λ°°μ΄μμμ κ²½μ°μ μ μ¬νκ² κ°μ²΄λ₯Ό 볡μ¬νκ±°λ 볡μμ κ°μ²΄λ₯Ό ν©μΉ λ μ¬μ©νλ€.
λ€λ§ 볡μ¬μ κ²½μ°λ λ°°μ΄κ³Ό λΉμ·νμ§λ§, 볡μ¬ν λλ μ‘°κΈ λ€λ₯΄λ€.
κ°μ νλ‘νΌν° ν€λ₯Ό κ°μ§κ³ μλ κ°μ²΄λΌλ¦¬ ν©μΉ λκ° λ€λ₯Έλ°, μ΄ κ²½μ°λ λ¦κ² μ
λ ₯ν κ°μ²΄μ νλ‘νΌν° λ°Έλ₯λ₯Ό κ°μ§κ³ μλ κ°μ²΄κ° λ°νλλ€.
// κ°μ²΄ ν©μΉκΈ° μμ let a ={ name: 'sunghoon', job: 'officer', }; let b ={ job: 'dev' age: 26; }; let c = {...a, ...b}; console.log(c) // { name: 'sunghoon', job: 'dev', age: 26 } // νλ‘νΌν° ν€κ° jobμΈ νλ‘νΌν°μ κ°μ΄ officerμμ devλ‘ λ°λμλ€. // κ°μ²΄ λ³΅μ¬ μμ let a ={ name: 'sunghoon', job: 'dev', }; let b = { ...a } delete b.job; console.log(b) // { name: 'sunghoon' } console.log(a) // { name: 'sunghoon', job: 'dev' } // 볡μ¬ν κ°μ²΄μΈ bμ νλ‘νΌν°κ° μμ λμμ§λ§ μ κ°μ²΄μΈ aμ νλ‘νΌν°μ λ³κ²½μ μλ€.
rest νλΌλ―Έν°λ μ ν΄μ§μ§ μμ μμ μμλ₯Ό κ°μ§ μΈμλ₯Ό λ°°μ΄λ‘ λνλΌ μ μκ² ν΄μ€λ€.
μ½κ² λ§ν΄μ λ§€κ° λ³μλ₯Ό λ°°μ΄ ννλ‘ λ°μμ μ¬μ©κ°λ₯νκ³ λ§€κ° λ³μμ κ°―μκ° κ°λ³μ μΌλ μ¬μ©ν μ μλ€.
λ¨, rest νλΌλ―Έν° μ΄νμλ λ€λ₯Έ λ§€κ° λ³μλ νΈλ μΌλ§ μ½€λ§κ° μ¬ μ μλ€.
μ
λ ₯λ μΈμκ° μ μ΄ rest νλΌλ―Έν°μ ν λΉλμ§ λͺ»νλ©΄ λΉ λ°°μ΄μ΄ λ°νλλ€.
const favFruit = function(fruit1, fruit2, ...fruits) { console.log('My favorite fruit is ' + fruit1) console.log('and I also like ' + fruit2) console.log('and there\'s ' + fruits.length + ' more fruits that I like') console.log(fruits) } favFruit('grape', 'melon', 'peach', 'apple', 'pineapple') // My favorite fruit is grape; // and I also like melon; // and there's 3 more fruits that I like // ['peach', 'apple', 'pineapple']; // λλ¨Έμ§ μΈμλ€μ΄ λ°°μ΄μ ννλ‘ ν λΉλμλ€.
ꡬ쑰 λΆν΄ ν λΉμ λ°°μ΄μ΄λ κ°μ²΄μ μμ±μ ν΄μ²΄ν΄ κ·Έ κ°μ κ°λ³ λ³μμ λ΄μ μ μκ² νλ JavaScriptμ ννμμ΄λ€.
λ°°μ΄μ΄λ κ°μ²΄λ₯Ό λΆν΄ν λ rest νλΌλ―Έν°λ₯Ό μ΄μ©ν μ μλ€.
// λ°°μ΄μ κ²½μ° const [a, b, ...c] = [1, 2, 3, 4, 5] console.log(a) // 1; console.log(b) // 2; a,bλ μ«μμ΄μ΄λ€. console.log(c) // [3, 4, 5] // κ°μ²΄μ κ²½μ° const {a, b, ...c} = {a:1, b:2, c:3, d:4, e:5} console.log(a) // 1; console.log(b) // 2; a,bλ μ«μμ΄μ΄λ€. console.log(c) // { c:3, d:4, e:5} // ν¨μ μ¬μ© μμ function orderBurger({kindOf, sauce, topping,}){ console.log(`${sauce}μμ€μ ${topping}μ΄/κ° μΆκ°λ ${kindOf}λ²κ±°κ° μ£Όλ¬Έλμμ΅λλ€.`) } let iWant = { kindOf: 'ν΅μμ°', sauce: 'ν«μΌμ²©', bread: 'μ°ΈκΉ¨λΉ΅', topping: 'μΉμ¦', } orderBurger(iWant); // ν«μΌμ²©μμ€μ μΉμ¦μ΄/κ° μΆκ°λ ν΅μμ°λ²κ±°κ° μ£Όλ¬Έλμμ΅λλ€.; // κ°μ²΄(iWant)μ νλ‘νΌν°μ€ ν¨μμ λ§€κ° κ°μ²΄μ μλ λ³μμ μΌμΉνμ§ μλκ² μμΌλ©΄ // κ·Έλ₯ 무μνκ³ μλ κ²λ€λ§ μ°Ύμμ ν¨μκ° μ€νλλ€.
λ¨μΆ νκΈ°λ²μ μ μμ μ μΈλκ³ ν λΉλ λ³μκ° μλ μνμμ κ°μ²΄λ¦¬ν°λ΄μμ ν΄λΉ λ³μκ° ν€λ‘ μμΌλ©΄ μ μ λ³μλ₯Ό κ°μ Έμμ 벨λ₯μΌλ κ²μ΄λ€.
let name = 'sunghoon' let planet = { name, age: 26, } console.log(planet) // { name: 'sunghoon', age: 26 }
μ κ° κ΅¬λ¬Έκ³Ό rest νλΌλ―Έν°λ₯Ό μ΅νλ€.
νμ΄λΆκ³Ό Koansλ₯Ό νλ©° μλ°μ€ν¬λ¦½νΈμ λ³΄λ€ μΉν΄μ‘λ€.
Koansλ₯Ό νλ©° 볡μ΅μ΄ μ€μνλ€λκ±Έ λ€μ νλ² κΉ¨λ¬μλ€.
λ²μ¨ ν μ£Όκ° νμ© μ§λ¬λ€.
μμ·¨ λλ¬Έμ μνν¨ν΄μ΄ μμ ν λ§κ°μ§κ³ μ μ μμ΄ κ³΅λΆνλ€ λ³΄λ λ²μ¨ κΈμμΌμ΄λΌλ.
μμ λκ°μ μ§μ€νκ³ μμΌλ©΄ μκ°μ κΈλ°©κΈλ°© νλ¬κ°λ κ² κ°λ€.
μμνμ§ μΌλ§ μλ κ² κ°μλ° λ²μ¨ 2μ£Ό μ‘°κΈ μλλ μκ° νμλ 첫λ²μ§Έ HAμ λ§λΆκ² μκ²Όλ€.
κ°ν΄μ Έμ μ½κ² λλ € λν μ μκΈΈ κ³ λνλ€.
κ·Έλ¦¬κ³ μ€λμ κΈμμΌμ΄κ³ λκ° κ·Έλ₯ 보λ΄κΈ° μμ¬μ°λ λ§₯μ£Ό ν μ νλ©° λ§μ§λ§μ μ₯μνλκ±Έλ‘.
μμ