๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

arguments๊ฐ์ฒด: ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์ƒ์„ฑ ์‹œ์ ์— ๋งŒ๋“ค์–ด์ง€๋‹ค

arguments ๊ฐ์ฒด๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์ƒ์„ฑ ์‹œ์ ์— ํ•จ๊ป˜ ๋งŒ๋“œ๋Š” ์ •๋ณด ์ค‘ ํ•˜๋‚˜๋‹ค. ์ง€์ •ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ํ˜ธ์ถœ ์‹œ ์ธ์ž๊ฐ€ ๋ชจ๋‘ arguments ์ •๋ณด์— ๋‹ด๊ธด๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์„ฑ ๋•์— ํ•จ์ˆ˜์˜ ์ž์œจ์„ฑ์„ ๋†’์ด๋Š” ์ธก๋ฉด์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค. arguments๋Š” ์œ ์‚ฌ๋ฐฐ์—ด ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์ฒ˜๋Ÿผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  ๋ณ„๋„์˜ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋˜ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฐ”๊พธ๋ฉด arguments์˜ ๊ฐ’๋„ ๋ฐ”๋€Œ๋Š”๋ฐ, ์ด๋Š” ์ „๋‹ฌ๋œ ์ธ์ž๋ฅผ ๋ชจ๋‘ ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ๋ผ๋Š” ๋ณธ๋ž˜์˜ ๊ฐœ๋…๊ณผ ๋‹ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ์ด ๋•Œ๋ฌธ์— ES6์—์„œ๋Š” ๋‚˜๋จธ์ง€ ํŒŒ๋ผ๋ฏธํ„ฐ(rest parameter aka ...)๊ฐ€ ๋“ฑ์žฅํ•˜์—ฌ argumetns๋ฅผ ๋Œ€์ฒดํ•˜๊ณ  ์žˆ๋‹ค.

 

1. ์ธ์ž ๊ฐœ์ˆ˜์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ, ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

function add() {
    var sum = 0;
    for (var i = 0; i < arguments.length; i++) {
        sum += arguments[i];
    }
    return console.log(sum);
}

add(100, 200, 300);    // 600
add(10, 20, 30, 40);   // 100

arguments๊ฐ์ฒด๋ฅผ ์•„์šฉํ•˜๋ฉด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •ํ•ด๋†“์ง€ ์•Š์•„๋„, ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2. ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ, arguments ๊ฐ์ฒด๊ฐ€ ์•”๋ฌต์ ์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค.

function argu() {
    console.dir(arguments);
}

argu();
argu(1, 2);

์‹คํ–‰๊ฒฐ๊ณผ

- arguments ๊ฐ์ฒด๋Š” ์œ ์‚ฌ๋ฐฐ์—ด๊ฐ์ฒด๋‹ค.

   1) ์œ ์‚ฌ๋ฐฐ์—ด๊ฐ์ฒด๋ž€, ๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๊ฐ™์ด ์ƒ๊ธด ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค.

   2) arguments ๊ฐ์ฒด๋Š” key๊ฐ€ 0,1,2...์ธ ์ˆซ์ž, length๊ฐ€ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.

   3) key๊ฐ€ 0,1,2๋กœ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— arguments[0]๋กœ๋„ value๋ฅผ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด, ๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ๋ถˆ๋ฆฐ๋‹ค.

 

3. ์ธ์ž์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ถ€์กฑํ•  ๊ฒฝ์šฐ, ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ

function print(arg1, arg2) {
	console.log(arg1, arg2)
}

add()         // undefined undefined
add(1)        // 1 undefined
add(1,2)      // 1 2
add(1,2,3)    // 1 2

- argument๋ฅผ ๋ถ€์กฑํ•˜๊ฒŒ ํ˜ธ์ถœํ•  ๊ฒฝ์šฐ, undefined๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

- argument๋ฅผ ์ดˆ๊ณผํ•ด์„œ ํ˜ธ์ถœํ•  ๊ฒฝ์šฐ, ๋ฌด์‹œํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•