Search

반응형

'arguments'에 해당되는 글 1건

  1. 2022.09.25 [자바스크립트]함수 이야기 8탄, 매개변수(parameters)와 인수(arguments) 1
반응형

여러분이 함수를 사용하려면 매개변수와 인수를 알아야 합니다.

매개변수(parameters, 파라미터), 인수(arguments, 아규먼트)의 의미 먼저 이해해 봅니다.

매개변수(파라미터)는 함수를 만들 때 어떤 값을 입력받을지 정하는 변수라 할 수 있습니다.

괄호() 안에 매개변수 이름을 지정해서 사용하면 됩니다.

1
2
3
function myFunc(a, b) {
    return a + b;
}
cs

myFunc는 함수 이름이고 괄호 안의 a, b가 매개변수가 됩니다.

인수(arguments)는 이렇게 함수를 정의할 때 선언한 a, b에 함수를 호출하면서 입력할 실제 값을 의미합니다.

myFunc(5, 6);

매개변수 a, b에 5, 6 값을 넣은 후 호출했습니다.

이때 5, 6이 인수입니다.

 

인수 사용하는 방법

인수는 객체입니다. 그리고 배열처럼 [i]를 붙여서 값을 가져올 수 있습니다.

함수를 호출할 때 설정된 매개변수로 인수를 전달하면 함수 내부에서 해당 인수 객체를

배열처럼 사용해서 값을 사용할 수 있습니다.

객체 이름은 arguments입니다.

arguments[i]; 

이렇게 함수 내에서 사용할 수 있습니다.

첫 번째 인수를 받으려면 arguments[0]로 i는 배열처럼 0으로 시작합니다.

중요한 점은 배열처럼이라는 표현을 썼는데요. 그 의미는 배열과 같은 객체는 아니라는 의미입니다.

사용법이 비슷해서 배열처럼이라는 표현을 사용하고 있습니다.

인수가 총 몇개인지 확인할 때 사용하는 속성은 length입니다.

var len = arguments.length;

1
2
3
4
5
6
7
function test(){
    for (var i = 0; i < arguments.length; i++){
        console.log(arguments[i]);
    }
}
 
test(12345);
cs

잠깐!

이 코드는 좀 이상합니다.

test() 함수는 매개변수가 1개도 선언이 되지 않았지만 7번 라인을 보면 1,2,3,4,5를 인수로 넘기고 있습니다.

보통 자바라면 오류가 발생했겠지만,

자바스크립트는 아무렇지도 않게 받아 줍니다.

그리고 해당 값은 선언된 매개변수가 없기에 사용할 수 없지만

arguments[]를 사용해서 순서대로 값을 꺼내서 사용할 수 있게 됩니다.

정말 황당하네요. ^^

매개변수가 정해졌지만 인수를 설정하지 않는다면 해당 매개변수는 함수 내에서 변수와 마찬가지로 undefined가 할당됩니다.

1
2
3
4
5
6
function test(a, b){
    console.log(a);
    console.log(b);
 
}
test(1);
cs

위 예제는 b 매개변수에 값을 넣지 않고 6번 라인처럼 호출을 한다면 undefined가 출력됩니다.

다르게 생각해 본다면 매개변수가 만들어지면 기본으로 undefined가 할당되어 있다고 생각하면 됩니다.

만약 b 값에 무조건 인수가 할당되어야 하고 undefined가 안되어한다면 기본값으로 설정할 수 있습니다.

test(a, b = 0)

이처럼 b 값이 필수여야 하며 기본(디폴트)으로 값이 무조건 있어야 한다면

그래서 사용자가 호출할 때 누락했다면 기본으로 0을 할당하는 방법으로 선언할 때 사용하면 됩니다.

 

나머지 매개변수 사용하는 방법

1
2
3
4
5
6
7
function test(a, ... others){
    console.log(a);
    console.log(others[0]);
    console.log(others[1]);
}
 
test('a'12);
cs

마지막으로 나머지 매개변수를 사용하는 방법을 알아봅니다.

위 예제를 보면... 뒤에 매개변수를 사용했습니다.

정해지지 않은 수만큼 인수를 받아야 하는 경우 위 예제처럼 점 3개를 사용하고 매개변수를 사용하면 됩니다.

해당 매개변수는 함수 내에서 배열로 사용할 수 있습니다.

자바스크립트는 정말 유연한 프로그램입니다.

그렇기에 더 자세히 살펴보면서 충분히 이해하고 사용한다면

다양한 기능을 사용할 수 있을 겁니다.

또한 자바스크립트를 깊이 공부하면서 다른 프로그램 언어 또한 깊이가 더해지는 느낌이 든답니다.

하나를 하더라도 제대로 전문가가 되어야 한다는 마음으로

열심히 읽고 코딩하면서 실력을 키워나가 봅니다.

반응형