์ฐ์ ์ธ์ ๊ฐ์ฒด์ ๋ํด์ ์์๋ด ์๋ค.
์ธ์ ๊ฐ์ฒด(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
'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Promise (0) | 2025.03.16 |
---|---|
ํ์ดํ ํจ์ (1) | 2025.02.25 |
์ค์ฝํ (์ ์ญ ์ค์ฝํ, ์ง์ญ ์ค์ฝํ, ๋ธ๋ก ์ค์ฝํ, ํจ์ ์ค์ฝํ) (0) | 2024.11.15 |
๋งค๊ฐ๋ณ์(Parameter)์ ์ธ์(Argument) (0) | 2024.08.28 |
๊ธฐ๋ณธ ๋งค๊ฐ๋ณ์(default parameters) (0) | 2024.08.28 |