JavaScript arguments 인수

Develop My Life·2020년 4월 15일
1

JavaScript

목록 보기
9/15

arguments 인수

인수를 가리키는 것으로 배열과 유사한 형태이다.

인수와 매개변수

인수와 매개변수는 혼용하는 경우가 있지만 엄밀히 말하자면 인수는 함수를 호출할 때 넣는 수를 말하고 매개변수는 함수를 정의할 때 들어오는 변수를 의미한다.

인수와 매개변수 내용 링크 참고 : https://velog.io/@jsleeg98/JavaScript-%EB%B0%98%EB%B3%B5%EB%AC%B8%EA%B3%BC-%ED%95%A8%EC%88%98with-%EB%94%94%EB%B2%84%EA%B1%B0-%EC%8B%A4%ED%96%89-%EB%B0%A9%EB%B2%95#%ED%95%A8%EC%88%98%EC%9D%98-%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98parameter%EC%99%80-%EC%9D%B8%EC%88%98argument

JavaScript에서의 인수의 특징

보통 다른 언어에서는 매개변수의 개수와 인수의 개수가 동일하지 않으면 오류를 출력하는데 JavaScript에서는 그 개수들이 서로 동일하지 않아도 오류가 출력되지 않고 동작한다. 이 점에 아주 유의해야한다.

JavaScript에서 매개변수 개수와 인수의 개수가 달라도 오류가 발생하지 않는 예시

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
<script type="text/javascript">
	function zero(arg1, arg2, arg3){ //매개변수 3개
		return arg1 + arg2 + arg3;
	}
	document.write(zero(4,5,6,7,8,9)); //인수 6개 //출력값 15
	//인자의 개수가 매개변수의 개수보다 많아 앞쪽 3개의 인자만 매개변수로 입력된다. 
	//원하지 않는 값이 출력될 수 있다.
</script>
</body>
</html>

arguments를 사용하는 이유 2가지

1. 인수의 개수를 예상하지 못할 때

  • arguments.length 활용
  • arguments[index] 활용

    배열과 유사한 형식이라는 것을 알 수 있다.

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
<script type="text/javascript">
	var sum_result = 0;
	function sum_func(){ //매개변수를 아예 선언하지 않았다.
		for(var i = 0; i < arguments.length ;i++){ //arguments.length는 인수의 개수를 의미한다.
			sum_result += arguments[i]; //arguments[index]는 그 index가 가리키는 인수의 값을 의미한다. 배열과 유사
		}
		return sum_result;
	}
	document.write(sum_func(1,2,3,4,5,6)); //인수 6개 //출력값 21
	//위와 같은 함수는 인수의 개수를 예상할 수 없지만 필요한 기능을 구현하기 위해 만들 수 있는 함수의 형태이다.
	

</script>
</body>
</html>

2. 인수와 매개변수의 비교를 통해 더 사용자가 원하는 역할을 하는 함수를 만들 때

  • 함수이름.length 는 함수의 매개변수의 개수를 의미
  • arguments.length 는 함수에 들어온 인자의 개수를 의미

    length를 활용하여 인수 개수와 매개변수 개수를 비교하여 오류를 출력하는 함수를 만들 수 있다.

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
<script type="text/javascript">
	function strict_sum(arg1, arg2, arg3){//매개변수의 개수는 3개
		if(strict_sum.length == arguments.length){
			//strict_sum.length는 매개변수의 개수, arguments.length는 인자의 개수를 의미한다.
			alert(arg1 + arg2 + arg3);
		}
		else{
			alert("오류");
		}
	}
	strict_sum(7,8,9); // 인자의 개수는 3개
	//매개변수와 인자의 개수가 같기 때문에 25 가 출력된다.
	strict_sum(7,8,9,10); // 인자의 개수는 4개
	//매개변수와 인자의 개수가 다르기 때문에 오류 가 출력된다.
</script>
</body>
</html>

0개의 댓글