Front-end/JavaScript

[JavaScript] arguments

윤민_ 2021. 10. 28. 23:56

arguments

함수에는 arguments라는 객체가 존재한다.

함수 안에서 여러가지의 인자의 정보를 담고있는 객체이다.

사용법이 매우 배열과 유사하기 때문에 유사배열이라 볼 수 있다.

즉, 함수를 이용하는 사람이 매개변수에 집어 넣는 값을 의미한다.

function sum(){
//현재 인자 값이 존재하지 않는다. 그 이유는 인자가 들어오는 수를 예측 할 수 없기 때문이다.
//함수 안의 arguments객체 안에 존재하는 값들을 꺼낸 후 sum에 더해 return해주면 결과를 알 수 있다.
    var _sum = 0;    
    for(var 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)); //sum안에 숫자들은 arguments이다.
//arguments라는 객체의 내부에는 사용자가 전달한 인자가 들어간다.sum의 값이 객체 arguments에 들어가게 된다.

상단의 코드에서 arguments가 하는 일

1. .length를 통해 객체를 포함하고있는 함수가 몇개의 인자를 가지고있는지 알 수 있다.

2. arguments대괄호 안에 index값을 전달하는 것을 통해 sum에 유입된 인자의 특정 자리수의 값을 알 수 있다.


인자와 매개변수의 차이

function a (arg) { }

 a(1)일때 숫자 1은 인자라 부른다. 값이 저장되는 변수 arg를 매개변수라 부른다.


 

매개변수의 수

매개변수와 관련된 두가지 수가 있다.

1. 함수 .length (함수로 전달된 실제 인자의 수)

2. arguments.length (함수에 정의된 인자의 수)

function zero(){ //인자 0개
    console.log(
        'zero.length', zero.length,
        'arguments', arguments.length
    );
}
zero(); //매개변수 0개 //zero.length: 0 arguments:0


function one(arg1){//매개변수 arg1 1개
    console.log(
        'one.length', one.length, //1 출력( 힘수의 매개변수 )
        'arguments', arguments.length //2 출력 (함수를 출력할때 몇개의 arguments를 전달했는가)
    );
}
one('val1','val2'); //매개변수 2개 (val1, val2) //one.length: 1 arguments: 2


function two(arg1, arg2){//매개변수 2개
    console.log(
        'two.length', two.length,
        'arguments', arguments.length
    );
}
two('val1'); //매개변수 1개  // two.length 2 arguments 1