JavaScript

๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜(REST Parameters)

meteorqz6 2024. 8. 28. 17:24

์šฐ์„  ์ธ์ˆ˜ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ด…์‹œ๋‹ค.

์ธ์ˆ˜ ๊ฐ์ฒด(Arguments Object) : ํ•จ์ˆ˜์— ์ „๋‹ฌ๋œ ์ธ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด

์ธ์ˆ˜ ๊ฐ์ฒด๋Š” JavaScript์˜ ์˜ค๋ž˜๋œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. 

 

์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๋ž€ length ์†์„ฑ๊ณผ 0๋ถ€ํ„ฐ ์ธ๋ฑ์Šค๋œ ๋‹ค๋ฅธ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ๋ฐฐ์—ด์˜ forEach, map ๋“ฑ๊ณผ ๊ฐ™์€ ๋‚ด์žฅ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ธ์ˆ˜ ๊ฐ์ฒด๋Š” ์‹ค์ œ ๋ฐฐ์—ด์ด ์•„๋‹™๋‹ˆ๋‹ค. 

function sum() {
    console.log(arguments);
    console.log(arguments.length);
    console.log(arguments[0]);
}

sum(); 
// [Arguments] {}
// 0
// undefined

sum(1, 2, 3); 
// [Arguments] { '0': 1, '1': 2, '2': 3 }
// 3
// 1

 

์ธ์ˆ˜ ๊ฐ์ฒด๋Š” ๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ๋ฐฐ์—ด์ด๋ผ๊ณ  ํ•˜๊ธฐ์—” ๋ถ€์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ๊ฐ€ ๋” ๊ฐ„๊ฒฐํ•ด์ง‘๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์‹ค์ œ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. 

 

function sortArguments() {
    let sortedArgs = arguments.sort();
    return sortedArgs;
}

console.log(sortArguments(7, 9, 5, 1));
// TypeError: arguments.sort is not a function

function sortRest(...arr) {
    let sortedArr = arr.sort();
    return sortedArr;
}

console.log(sortRest(7, 9, 5, 1));
// [ 1, 5, 7, 9 ]

 

๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜(Rest Parameters) ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ์ •ํ•ด์ง€์ง€ ์•Š์€ ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

ํ•จ์ˆ˜์˜ ๋งˆ์ง€๋ง‰ ๋งค๊ฐœ๋ณ€์ˆ˜ ์•ž์— "..." ์„ ๋ถ™์ด๋ฉด ๋ชจ๋“  ํ›„์† ๋งค๊ฐœ๋ณ„์ˆ˜๋ฅผ ํ‘œ์ค€ JS ๋ฐฐ์—ด์— ๋„ฃ๋„๋ก ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. 

function myFun(a, b, ...manyMoreArgs) {
  console.log("a", a);
  console.log("b", b);
  console.log("manyMoreArgs", manyMoreArgs);
}

myFun("one", "two", "three", "four", "five", "six");

// ์ฝ˜์†” ์ถœ๋ ฅ:
// a, one
// b, two
// manyMoreArgs, [three, four, five, six]

 

์œ„์˜ ์ฝ”๋“œ์—์„œ myFun ํ•จ์ˆ˜๋Š” 3๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ ์ค‘ ๋งˆ์ง€๋ง‰ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ง€์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, one์€ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ a์— ํ• ๋‹น๋˜๊ณ , two๋Š” ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ b์— ํ• ๋‹น๋˜๊ณ , three, four, five, six ๋‚˜๋จธ์ง€ ์ธ์ˆ˜๋“ค์€ ๋ชจ๋‘ ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜ 'mantMoreArgs'์— ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. 

 

๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ช…์‹œ์ ์ธ ์ผ๋ถ€ ์ธ์ˆ˜์™€ ๊ฐ€๋ณ€์ ์ธ ๋‚˜๋จธ์ง€ ์ธ์ˆ˜๋“ค์„ ๋ฐฐ์—ด๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. 

 

[ references ] 

https://yozm.wishket.com/magazine/detail/2732/

 

์‹œ์ž‘ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ JS ๋งค๊ฐœ ๋ณ€์ˆ˜ ํ™œ์šฉ๋ฒ• 2๊ฐ€์ง€ | ์š”์ฆ˜IT

์ด๋ฒˆ ๊ฐ•์˜์—์„œ๋Š” JavaScript์˜ ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ๊ตฌ๋ฌธ์„ ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € ๋‹ค๋ฃฐ ์ฃผ์ œ๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ์šฐ์„  ๋“ฑํ˜ธ๋ฅผ ํ™œ์šฉํ•ด ๊ธฐ๋ณธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

yozm.wishket.com

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/arguments

 

arguments ๊ฐ์ฒด - JavaScript | MDN

arguments ๊ฐ์ฒด๋Š” ํ•จ์ˆ˜์— ์ „๋‹ฌ๋œ ์ธ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” Array ํ˜•ํƒœ์˜ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

developer.mozilla.org

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/rest_parameters

 

๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜ - JavaScript | MDN

๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ์ •ํ•ด์ง€์ง€ ์•Š์€ ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JavaScript์—์„œ ๊ฐ€๋ณ€ํ•ญ ํ•จ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

developer.mozilla.org