๐ŸคŸ
Vanilla-JS
  • TRIPLE-PLUS Adout
  • Babel.JS
  • 01.Vanilla-JS
    • 01. Hello JavaScript
    • 02. ๋ณ€์ˆ˜
      • 02-1.์ง€ํ‚ค๋ฉด ์ข‹์€ ๋ฃฐ(๋” ์ข‹์€ ์Šคํƒ€์ผ์„ ์œ„ํ•ด์„œ)
      • 02-2.์ˆซ์žํ˜•๊ฟ€ํŒ(์ˆ˜์‹ ์ค„์ด๊ธฐ)
    • 03. ์—ฐ์‚ฐ์ž
    • 04. ์กฐ๊ฑด๋ฌธ
    • 05. ํ•จ์ˆ˜
      • this์˜ ์˜๋ฏธ 6๊ฐœ ์ด์ •๋ฆฌ
      • event listener์™€ constructor
      • 05-1. return:๋Œ๋ ค์ฃผ๋‹ค
      • 05-2. ํ˜• ๋ณ€ํ™˜ ํ•จ์ˆ˜
      • 05-3. Arrow function
    • 06. ๊ฐ์ฒด
    • 07. ๋ฐฐ์—ด
      • 07-1. ๋ฐฐ์—ด ์•ˆ์— ๋ฐฐ์—ด(2์ฐจ ๋ฐฐ์—ด)
      • 07-2. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(forEach)
      • 07-3. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(sort)
      • 07-4. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(map)
      • 07-5. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(indexOf)
      • 07-6. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(filter)
      • 07-7. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(splice, slice)
      • 07-8. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(shift, unshift, pop, push)
      • 07-9. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(concat, join)
      • 07-10. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(reduce)
      • 07-10. ๋ฐฐ์—ด๋‚ด์žฅ ํ•จ์ˆ˜(reduce)2
    • 08. ๋ฐ˜๋ณต๋ฌธ
    • 09. Class์™€ ํ”„๋กœํ† ํƒ€์ž…
      • 09-1. ํ”„๋กœํ† ํƒ€์ž…๊ณผ ํด๋ž˜์Šค - ์ƒ์„ฑ์ž
      • 09-2. ํ”„๋กœํ† ํƒ€์ž…๊ณผ ํด๋ž˜์Šค - ์ƒ์„ฑ์ž ์ƒ์†ํ•˜๊ธฐ
      • Class & Constructor & Method
      • super
      • Static Method
      • Class Getter, Setter
      • Information Hiding
      • Inheritance & Polymorphism
      • Overriding
      • Abstract Class
      • Interface
    • Math ์ •๋ฆฌ
    • String ์ •๋ฆฌ
    • Array์ •๋ฆฌ
    • Date ์ •๋ฆฌ
      • D-day ๊ตฌํ•˜๊ธฐ
  • 02.Vanilla-JS
    • 01.์‚ผํ•ญ์—ฐ์‚ฐ์ž
    • 02. Truthy and Falsy
    • 03. ๋‹จ์ถ• ํ‰๊ฐ€ ๋…ผ๋ฆฌ ๊ณ„์‚ฐ๋ฒ•
    • 04. ํ•จ์ˆ˜ ์—…๊ทธ๋ ˆ์ด๋“œ (default parameter/arguments)
    • 05. ์กฐ๊ฑด๋ฌธ ๋” ์Šค๋งˆํŠธํ•˜๊ฒŒ ์“ฐ๊ธฐ
    • 06. ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น (๊ตฌ์กฐ๋ถ„ํ•ด) ๋ฌธ๋ฒ•
    • 07. spread ์™€ rest
      • ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ์˜ rest(params)
      • ํ•จ์ˆ˜ ์ธ์ž์—์„œ์˜ spread
    • 08. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ Scope ์— ๋Œ€ํ•œ ์ดํ•ด
    • 09. Hoisting ์ดํ•ดํ•˜๊ธฐ
    • 10. Native DOM ์„ ํƒ
  • 03.๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
    • 01. fetch, then, catch[Promise] ์ดํ•ดํ•˜๊ธฐ
    • 02. ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๋Š” Promise ๊ฐ์ฒด
    • 03. async/await
    • 04. Promise all, Promise.race
  • REST API ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ
    • mongodb Atlas
    • mongodb Atlas(DB)์— ์ ‘๊ทผํ•˜๋ ค๋ฉด
    • URL ์ด๋ฆ„์ง“๊ธฐ ๊ด€์Šต
    • Database์— ์ž๋ฃŒ ์ €์žฅํ•˜๋Š” ๋ฒ•
    • ๊ฒŒ์‹œ๋ฌผ๋งˆ๋‹ค ๋ฒˆํ˜ธ๋ฅผ ๋‹ฌ์•„ ์ €์žฅํ•˜๊ธฐ
    • ๊ฒŒ์‹œ๋ฌผ๋งˆ๋‹ค ๋ฒˆํ˜ธ๋ฅผ ๋‹ฌ์•„ ์ €์žฅํ•˜๊ธฐ2
  • JQUERY + SCRIPT ์œ ์šฉํ•œ ์ฝ”๋“œ ์ •๋ฆฌ
  • Practice(์‹ค์Šต)
    • ์นด์šดํ„ฐ ๋งŒ๋“ค๊ธฐ
    • reduce
    • ๋ฐ์ดํ„ฐ ์ž๋ฃŒํ˜• ํ™œ์šฉํ•˜๊ธฐ1
    • ๋ฐ์ดํ„ฐ ์ž๋ฃŒํ˜• ํ™œ์šฉํ•˜๊ธฐ2
    • ๋ฐ์ดํ„ฐ ๊ฐ€์ง€๊ณ  ๋†€๊ธฐ(์‘์šฉ)1
    • ๋ฐ์ดํ„ฐ ๊ฐ€์ง€๊ณ  ๋†€๊ธฐ(์‘์šฉ)2
    • REST API
    • ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ1
    • ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ2
    • ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ3
    • ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น
    • rest + spread(์‘์šฉ)1
    • rest + spread(์‘์šฉ)2
    • rest + spread(์‘์šฉ)3
    • ๋ฐ˜๋ณต๋ฌธ ๋‚ด์žฅํ•จ์ˆ˜(์‘์šฉ)1
    • ํ•จ์ˆ˜ ๊ฐ€์ง€๊ณ  ๋†€๊ธฐ(์‘์šฉ)1
    • ์„œ๋ฒ„์™€์˜ ํ†ต์‹ 1
    • ์„œ๋ฒ„์™€์˜ ํ†ต์‹ 2
    • new Promise(์‘์šฉ)2
    • new Promise(์‘์šฉ)3
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฒคํŠธ ์œ„์ž„ ํ•ต์‹ฌ ์ •๋ฆฌ
Powered by GitBook
On this page
  • 07. spread ์™€ rest
  • spread
  • spread ์—ฐ์‚ฐ์ž ๋ฐฐ์—ด์—์„œ๋„ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • rest
  • ๊ฐ์ฒด์—์„œ์˜ rest

Was this helpful?

  1. 02.Vanilla-JS

07. spread ์™€ rest

Previous06. ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น (๊ตฌ์กฐ๋ถ„ํ•ด) ๋ฌธ๋ฒ•Nextํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ์˜ rest(params)

Last updated 3 years ago

Was this helpful?

07. spread ์™€ rest

์ด๋ฒˆ์—๋Š” ES6 ์—์„œ ๋„์ž…๋œ ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฌธ๋ฒ•์ธ๋ฐ์š”, ์€๊ทผํžˆ ์ข€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

spread

์ผ๋‹จ spread ๋ฌธ๋ฒ•๋ถ€ํ„ฐ ์•Œ์•„๋ด…์‹œ๋‹ค. spread ๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์˜๋ฏธ๋Š” ํŽผ์น˜๋‹ค, ํผ๋œจ๋ฆฌ๋‹ค ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด, ๊ฐ์ฒด ํ˜น์€ ๋ฐฐ์—ด์„ ์†์‰ฝ๊ฒŒ ์ปจํŠธ๋กคํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ์ฒด๋“ค์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.

const slime = {
  name: '์Šฌ๋ผ์ž„'
};

const cuteSlime = {
  name: '์Šฌ๋ผ์ž„',
  attribute: 'cute'
};

const purpleCuteSlime = {
  name: '์Šฌ๋ผ์ž„',
  attribute: 'cute',
  color: 'purple'
};

console.log(slime);
console.log(cuteSlime);
console.log(purpleCuteSlime);
// ๊ฒฐ๊ณผ)
Object {name: '์Šฌ๋ผ์ž„'}
Object {name: '์Šฌ๋ผ์ž„', attribute: 'cute'}
Object {name: '์Šฌ๋ผ์ž„', attribute: 'cute', color: 'purple'}

์ด ์ฝ”๋“œ์—์„œ๋Š” ๋จผ์ € slime ์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  cuteSlime ์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ์š”, ๊ธฐ์กด์— ์„ ์–ธํ•œ slime ์„ ๊ฑด๋“ค์ด์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ slime ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.(์ฆ‰ ๋จผ์ €์„ ์–ธํ•œ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๊ฐ€์ ธ์˜จ๊ฒƒ ์ž…๋‹ˆ๋‹ค.)

๊ทธ ๋‹ค์Œ์—๋Š” purpleCuteSlime ์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ์š”, ์ด ๊ฐ์ฒด๋Š” cuteSlime ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†์„ฑ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ถ”๊ฐ€์ ์œผ๋กœ color ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์œ„ ์ฝ”๋“œ์—์„œ์˜ ํ•ต์‹ฌ์€, ๊ธฐ์กด์˜ ๊ฒƒ์„ ๊ฑด๋“ค์ด์ง€ ์•Š๊ณ , ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๊ฒƒ ์ธ๋ฐ์š”, ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์— ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์šฉํ•œ ๋ฌธ๋ฒ•์ด spread ์ž…๋‹ˆ๋‹ค.

์•„๊นŒ ์ฝ”๋“œ๋Š” spread ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const slime = {
  name: '์Šฌ๋ผ์ž„'
};

const cuteSlime = {
  ...slime,
  attribute: 'cute'
};

const purpleCuteSlime = {
  ...cuteSlime,
  color: 'purple'
};

console.log(slime);
console.log(cuteSlime);
console.log(purpleCuteSlime);
// ๊ฒฐ๊ณผ)
{name: "์Šฌ๋ผ์ž„"}
{name: "์Šฌ๋ผ์ž„", attribute: "cute"}
{name: "์Šฌ๋ผ์ž„", attribute: "cute", color: "purple"}

์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•œ ... ๋ฌธ์ž๊ฐ€ ๋ฐ”๋กœ spread ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค.

spread ์—ฐ์‚ฐ์ž ๋ฐฐ์—ด์—์„œ๋„ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const animals = ['๊ฐœ', '๊ณ ์–‘์ด', '์ฐธ์ƒˆ'];
const anotherAnimals = [...animals, '๋น„๋‘˜๊ธฐ'];
console.log(animals);
console.log(anotherAnimals);
// ๊ฒฐ๊ณผ)
['๊ฐœ','๊ณ ์–‘์ด','์ฐธ์ƒˆ']
['๊ฐœ','๊ณ ์–‘์ด','์ฐธ์ƒˆ', '๋น„๋‘˜๊ธฐ']

๊ธฐ์กด์˜ animals ๋Š” ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์œผ๋ฉด์„œ, ์ƒˆ๋กœ์šด anotherAnimals ๋ฐฐ์—ด์— animals ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์„ ๋ชจ๋‘ ์ง‘์–ด๋„ฃ๊ณ , '๋น„๋‘˜๊ธฐ' ๋ผ๋Š” ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€์ ์œผ๋กœ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐ์—ด์—์„œ spread ์—ฐ์‚ฐ์ž๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

const numbers = [1, 2, 3, 4, 5];

const spreadNumbers = [...numbers, 1000, ...numbers];
console.log(spreadNumbers); // [1, 2, 3, 4, 5, 1000, 1, 2, 3, 4, 5]

rest

rest๋Š” ์ƒ๊น€์ƒˆ๋Š” spread ๋ž‘ ๋น„์Šทํ•œ๋ฐ, ์—ญํ• ์ด ๋งค์šฐ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. rest๋Š” ๊ฐ์ฒด, ๋ฐฐ์—ด, ๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด์—์„œ์˜ rest

์šฐ์„  ๊ฐ์ฒด์—์„œ์˜ ์˜ˆ์‹œ๋ฅผ ์•Œ์•„๋ณผ๊นŒ์š”?

const purpleCuteSlime = {
  name: '์Šฌ๋ผ์ž„',
  attribute: 'cute',
  color: 'purple'
};

const { color, ...rest } = purpleCuteSlime;
console.log(color);
console.log(rest);
// ๊ฒฐ๊ณผ)
purple
Object {name: '์Šฌ๋ผ์ž„', attribute: 'cute'}

rest ์•ˆ์— color ๊ฐ’์„ ์ œ์™ธํ•œ ๊ฐ’์ด ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.

rest ๋Š” ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์—์„œ ์‚ฌ์šฉ ํ•  ๋•Œ๋Š” ์ด๋ ‡๊ฒŒ ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น ๋ฌธ๋ฒ•๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ์‚ฌ์šฉ ํ• ๋•Œ๋Š” ์œ„์™€ ๊ฐ™์ด rest ๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ์š”, ์ถ”์ถœํ•œ ๊ฐ’์˜ ์ด๋ฆ„์ด ๊ผญ rest ์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

const tion = (...ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค) => {
     ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค.forEach(element => {
        console.log(element)
    });
};

tion(1,2,3,4,5);
// ๊ฒฐ๊ณผ)
1
2
3
4
5
spread ์™€ rest