์ƒˆ์†Œ์‹

Languages/Java Script

[Js] arguments | ๋ฐฐ์—ด | javascript ๋ฐฐ์—ด | ๋งค๊ฐœ๋ณ€์ˆ˜

  • -
๋ฐ˜์‘ํ˜•

 

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ "์ƒํ™œ์ฝ”๋”ฉ"์˜ ์ด๊ณ ์ž‰ ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ฌ๋ฆฐ ๊ฒŒ์‹œ๊ธ€ ์ž…๋‹ˆ๋‹ค.

์ƒ์—…์ ์ธ ์šฉ๋„๊ฐ€ ์•„๋‹Œ, ๊ฐœ์ธ ๊ณต๋ถ€ ์ •๋ฆฌ ๋ชฉ์ ์œผ๋กœ ์˜ฌ๋ฆฌ๋Š” ๊ธ€์ž„์„ ๋ฏธ๋ฆฌ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.




arguments

๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋‹ค, ํ•จ์ˆ˜์—๋Š” arguments๋ผ๋Š” ๋ณ€์ˆ˜์— ๋‹ด๊ธด ์ˆจ๊ฒจ์ง„ ์œ ์‚ฌ ๋ฐฐ์—ด์ด ์žˆ๋‹ค.

์ด ๋ฐฐ์—ด์—๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ž…๋ ฅํ•œ ์ธ์ž๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค.

 

์•„๋ž˜ ์˜ˆ์ œ๋ฅผ ๋ณด์ž. ๊ฒฐ๊ณผ๋Š” 10์ด๋‹ค.

<!DOCTYPE html>
<html>
<head>
	<title>ํด๋กœ์ €</title>
</head>
<body>
<script type="text/javascript">
	function sum(){
		var i, _sum = 0;
		for(i = 0; i<arguments.length; i++){
			document.write('number : '+i+', value : '+arguments[i]+'<br />');
			_sum += arguments[i];
		}
		return _sum;
	}
	document.write('result : ' + sum(1,2,3,4));
</script>
</body>
</html>

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋งค์šฐ ๊ด€๋Œ€ํ•œ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ธ์ž์˜ ์ˆ˜๋ฅผ ๋งˆ์Œ๋Œ€๋กœ ์ง€์ •ํ•ด๋„ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค.

์œ„ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด sum()์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š”๋ฐ, ์ธ์ž์˜ ์ˆ˜๊ฐ€ 4๊ฐœ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋„ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค.

 

์œ„ ์ฝ”๋“œ์— arguments๋ผ๋Š” ๊ฒƒ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์•ฝ์†๋œ ํŠน์ˆ˜ํ•œ ๋ณ€์ˆ˜์ด๋‹ค. ์ด ๋ณ€์ˆ˜ ์•ˆ์—๋Š” ์œ ์‚ฌ ๊ฐ์ฒด(์œ ์‚ฌ ๋ฐฐ์—ด)์ด ๋‹ด๊ฒจ์ ธ ์žˆ๋‹ค.

์ด ๋ฐฐ์—ด์˜ ์—ญํ• ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ „๋‹ฌํ•œ ์ธ์ž๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

 

์ฆ‰ ์‚ฌ์šฉ์ž๊ฐ€ ์ „๋‹ฌํ•œ ์ธ์ž์˜ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

 

โ–ผ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ.

๋”๋ณด๊ธฐ

ํ•จ์ˆ˜ sum์€ ์ธ์ž๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„ ๋ชจ๋‘ ๋”ํ•ด์„œ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ํ•จ์ˆ˜ sum์€ ์ธ์ž์— ๋Œ€ํ•œ ์ •์˜๊ฐ€ ์—†๋‹ค.

ํ•˜์ง€๋งŒ ๋งˆ์ง€๋ง‰ ๋ผ์ธ์—์„œ๋Š” 4๊ฐœ์˜ ์ธ์ž๋ฅผ ํ•จ์ˆ˜ sum์œผ๋กœ ์ „๋‹ฌํ•˜๊ณ  ์žˆ๋‹ค.

 

ํ•จ์ˆ˜์˜ ์ •์˜๋ถ€๋ถ„์—์„œ ์ธ์ž์— ๋Œ€ํ•œ ๊ตฌํ˜„์ด ์—†์Œ์—๋„ ์ธ์ž๋ฅผ ์ „๋‹ฌ์ด ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ผ๊นŒ?

๊ทธ๊ฒƒ์€ arguments๋ผ๋Š” ํŠน์ˆ˜ํ•œ ๋ฐฐ์—ด์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. arguments๋Š” ํ•จ์ˆ˜์•ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ทธ ์ด๋ฆ„์ด๋‚˜ ํŠน์„ฑ์ด ์•ฝ์†๋˜์–ด ์žˆ๋Š” ์ผ์ข…์˜ ๋ฐฐ์—ด์ด๋‹ค. arguments[0]์€ ํ•จ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

๋˜ arguments.length๋ฅผ ์ด์šฉํ•ด์„œ ํ•จ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์„ฑ์— ๋ฐ˜๋ณต๋ฌธ์„ ๊ฒฐํ•ฉํ•˜๋ฉด ํ•จ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ธ์ž์˜ ๊ฐ’์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ๊ฐ’์„ ๋”ํ•ด์„œ ๋ฆฌํ„ดํ•˜๋ฉด ์ธ์ž๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์— ๋Œ€ํ•œ ์ดํ•ฉ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

arguments๋Š” ์‚ฌ์‹ค ๋ฐฐ์—ด์€ ์•„๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” arguments ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋‹ค.

 

๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆ˜

 

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๊ด€๋ จ๋œ ๋‘๊ฐ€์ง€ ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

ํ•˜๋‚˜๋Š” ํ•จ์ˆ˜.length, ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” arguments.length์ด๋‹ค.

 

arguments.length๋Š” ํ•จ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์‹ค์ œ ์ธ์ž์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๊ณ , ํ•จ์ˆ˜.length๋Š” ํ•จ์ˆ˜์— ์ •์˜๋œ ์ธ์ž์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

argument.length๋Š” ์‹ค์ œ๋กœ ์–ด๋– ํ•œ ํ•จ์ˆ˜๋กœ ์œ ์ž…๋œ ์ธ์ž์˜ ์ˆซ์ž๊ฐ€ ๋ช‡๊ฐœ์ธ์ง€ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์ด๊ณ ,
๊ทธ ํ•จ์ˆ˜๊ฐ€ ๋ช‡๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ํ•˜๊ณ  ์žˆ๋Š”์ง€๋Š” ์•Œ ์ˆ˜ ์—†๋‹ค.

 

์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ๋ณด์ž.

<script>
      function zero(){
          console.log(
              'zero.length', zero.length,
              'arguments', arguments.length
          );
      }
      function one(arg1){
          console.log(
              'one.length', one.length,
              'arguments', arguments.length
          );
      }
      function two(arg1, arg2){
          console.log(
              'two.length', two.length,
              'arguments', arguments.length
          );
      }
      zero(); // zero.length 0 arguments 0 
      one('val1', 'val2');  // one.length 1 arguments 2 
      two('val1');  // two.length 2 arguments 1
</script>

์œ„ ์˜ˆ์‹œ์—์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ one()๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

one.length๋กœ ์ถœ๋ ฅ์„ ํ•˜๋ฉด ๊ทธ ๊ฐ’์€ 1์ด๊ณ , arguments.length์˜ ๊ฐ’์€ 2๊ฐ€ ๋˜๋Š”๋ฐ ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

one.length ์ฆ‰ ํ•จ์ˆ˜.length๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด, ์ด ํ•จ์ˆ˜๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ •์˜ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆซ์ž๋ฅผ ์•Œ๋ ค์ค€๋‹ค.

arguments.length ์ฆ‰, ๋ช‡๊ฐœ์˜ ์ธ์ž๋ฅผ ์ „๋‹ฌํ•˜์˜€๋Š”๊ฐ€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด ์ ์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๊ด€๋ จ๋œ ๋‘ ๊ฐ€์ง€ ์ˆ˜(ํ•จ์ˆ˜.length, arguments.length) ์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ!

 

์ด๋Ÿฌํ•œ ์ฐจ์ด๋ฅผ ํ†ตํ•ด, ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ „๋‹ฌ์ธ์ž์˜ ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋ฉด ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋“ฑ์˜ ์ฝ”๋“œ๋ฅผ ์งค ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.