๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๊ฐœ๋ฐœ] Practice/JavaScript ES6

[JavaScript / ES6] Rest parameter

by Connecting-the-dots 2022. 4. 22.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก ์‹ค์Šต ํฌ์ธํŠธ!

๐Ÿ’œ arguments vs rest parameter

  • arguments ๋Š” parameter ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ์˜›๋‚  ๋ฌธ๋ฒ•์ด๊ณ , ์ด์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ํ›จ์”ฌ ๋‚˜์€ ์‹ ๋ฌธ๋ฒ•์ธ rest parameter ๋“ฑ์žฅ!
  • arguments ๋Š” ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ [] ์•ˆ์— ๋„ฃ์–ด์ฃผ๋Š” ๋ฐ˜๋ฉด, rest parameter ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์ž๋ฆฌ์— ์˜ค๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์ค‘ ์ผ๋ถ€๋ฅผ ํŠน์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ’œ rest parameter vs spread operator

  •  Spread Operator ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ์— ์‚ฌ์šฉํ•˜๋ฉด rest parameter ๊ฐ€ ๋œ๋‹ค.
  •  ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ž๋ฆฌ์— ... ์ด ๋ถ™์œผ๋ฉด rest parameter ์ด๊ณ , ๋‚˜๋จธ์ง€๋Š” spread operator ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ’œ rest parameter

๐Ÿค ํŠน์„ฑ ๋ฐ ์ฃผ์˜์ 

  • ํŒŒ๋ผ๋ฏธํ„ฐ์— ๊ตณ์ด rest ๋ผ๊ณ  ์“ฐ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋งŒ๋“ค์–ด๋„ ๋œ๋‹ค.
  • rest parameter ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋ช‡ ๊ฐœ ๋“ค์–ด์˜ฌ์ง€ ๋ฏธ๋ฆฌ ์ง€์ •์„ ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • rest parameter ๋Š” ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์จ์•ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋‘๋ฒˆ ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

๐Ÿค rest parameter ์•Œ์•„๋ณด๊ธฐ

function func(...params) {
    console.log(params);
}

func(1, 2, 3, 4, 5); // [1, 2, 3, 4, 5]
  • rest parameter ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์ž๋ฆฌ์— ์˜ค๋Š” ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ [] ์•ˆ์— ๋„ฃ์–ด์ค€๋‹ค.

 

function func1(a, b, ...params) {
    console.log(params);
}

func1(1, 2, 3, 4, 5); // [3, 4, 5]
  • arguments ๋Š” ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ [] ์•ˆ์— ๋„ฃ์–ด์ฃผ๋Š” ๋ฐ˜๋ฉด, rest parameter ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์ž๋ฆฌ์— ์˜ค๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์ค‘ ์ผ๋ถ€๋ฅผ ํŠน์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

function func2(a, b, ...params) {
    console.log(params[1]);
}

func2(1, 2, 3, 4, 5); // 4
  • rest parameter ๋Š” ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ [] ์•ˆ์— ๋„ฃ์–ด์ฃผ๋ฏ€๋กœ index ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

function func3(...params) {
    for (let i = 0; i < params.length; i++) {
        console.log(params[i]);
    }
}

func3(1, 2, 3, 4, 5); // 1 2 3 4 5 ๊ฐ€ ์ฝ˜์†”์ฐฝ์— ํ•œ ์ค„์”ฉ ์ถœ๋ ฅ!
  • ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์„ ํ•˜๋‚˜์”ฉ ์ฝ˜์†”์ฐฝ์— ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•