매개변수와 인수 & arguments객체

JY·2021년 3월 1일
0

🔍 매개변수와 인수

parameter(매개변수)?

함수의 정의에서 전달받은 인수를 함수 내부로 전달하기 위해 사용하는 변수

argument(인수)?

인수(argument)란 함수가 호출될 때 함수로 값을 전달해주는 값


🔍 매개변수와 인수의 개수가 다를 경우

1. 매개변수 > 인수

값이 전달되지 않은 나머지 매개변수의 값은 자동으로 undefined값으로 설정된다.

function addNum(x, y, z) { // x, y, z라는 3개의 매개변수를 가지는 함수 정의
    return x + y + z;
}
addNum(1, 2, 3); // 인수로 1, 2, 3을 전달하여 함수를 호출함. -> 6
addNum(1, 2);    // 인수로 1, 2을 전달하여 함수를 호출함. -> NaN
addNum(1);       // 인수로 1을 전달하여 함수를 호출함. -> NaN
addNum();        // 인수로 아무것도 전달하지 않고 함수를 호출함. -> NaN

2. 매개변수 < 인수

매개변수에 대입되지 못한 인수들은 참조할 방법이 없다.

function print(x, y, z) {
	return x + y + z;
}
result = print('a', 'b', 'c', 'd', 'e');
console.log(result) // abc (d와 e는 출력되지 않음)



🔍 arguments객체

🚩다음 포스팅에서 보다 자세한 내용이 이어짐

  • 함수가 호출될 때 전달된 인수를 배열의 형태로 저장한다.

  • 함수로 전달된 인수의 총 개수

function addNum() {
    var sum = 0;// 합을 저장할 변수
    for(var i = 0; i < arguments.length; i++) { // 전달받은 인수의 총 수만큼 반복
        sum += arguments[i]; // 전달받은 각각의 인수를 sum에 더함.
    }
    return sum;
}
addNum(1, 2, 3); // 6
addNum(1, 2);    // 3
addNum(1);       // 1
addNum();        // 0
addNum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // 55

[주의사항] arguments객체는 배열과 비슷할 뿐, 실제로 Array 객체는 아니다!!
숫자로 된 인덱스arguments[i]와 length 프로퍼티arguments.length만을 가지고 있을 뿐, 모든 것을 배열처럼 다룰 순 없다!

0개의 댓글