[Javascript] 함수지향 : arguments

SJ·2022년 10월 10일
0

Javascript

목록 보기
4/13

Arguments

arguments는 함수 안에서 사용할 수 있도록 자바스크립트에서 약속된 인자와 관련된 정보를 갖고 있는 객체(유사 배열)이다. 배열은 아니지만 배열과 사용방법이 매우 유사하다. 함수를 호출할 때 입력한 인자들의 목록이 담겨 있으며, 배열처럼 접근할 수 있다.

※ 인자와 매개변수

인자와 매개변수는 정확히 말하자면 같지 않지만 크게 구분을 두진 않는다.

  • 매개변수
function a(arg){} 

위에서 인자의 값이 저장되는 arg라는 변수는 a의 매개변수이다.

  • 인자
a(1);

위에서 매개변수 자리에 들어간 값 1은 a의 인자이다.


다음은 인자로 전달된 값들의 총합을 구하는 함수이다.

function sum(){
    var i, _sum = 0;    
    for(i = 0; i < arguments.length; i++){
        document.write(i+' : '+arguments[i]+'<br />');
        _sum += arguments[i];
    }   
    return _sum;
}
document.write('result : ' + sum(1,2,3,4)); // 10

arguments는 함수안에서 사용할 수 있도록 그 이름이나 특성이 약속되어 있는 일종의 배열로, arguments[0]을 통해 함수로 전달된 첫번째 인자를 알아낼 수 있다. 또 arguments.length를 이용해서 함수로 전달된 인자의 개수를 알아낼 수도 있다. 이러한 특성에 반복문을 결합하면 함수로 전달된 인자의 값을 순차적으로 가져올 수 있다. 그 값을 더해서 리턴하면 인자로 전달된 값들의 총합을 구하는 함수를 만들 수 있다.

❗️ 자바스크립트는 함수의 매개변수가 없지만 호출될 때 인자를 받거나 매개변수의 개수와 인자의 개수가 일치하지 않아도 오류를 발생시키지 않는다.

매개변수의 수 / 인자의 수 구하기

  • 함수이름.length : 함수에 정의된 매개변수의 수

  • arguments.length : 함수로 전달된 실제 인자의 수

이를 통해 매개변수와 실제 전달된 인자의 수를 비교할 수 있다.

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

위 코드에서

zero.length == 0
zero.arguments == 0

one.length == 1
one.arguments == 2

two.length == 2
two.arguments == 1 이다.


출처 : 생활코딩 - Javascript

0개의 댓글