인수를 가리키는 것으로 배열과 유사한 형태이다.
인수와 매개변수는 혼용하는 경우가 있지만 엄밀히 말하자면 인수는 함수를 호출할 때 넣는 수를 말하고 매개변수는 함수를 정의할 때 들어오는 변수를 의미한다.
보통 다른 언어에서는 매개변수의 개수와 인수의 개수가 동일하지 않으면 오류를 출력하는데 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>
배열과 유사한 형식이라는 것을 알 수 있다.
<!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>
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>