JavaScript/생활코딩

자바스크립트 기본 - arguments

점미 2018. 12. 5. 14:04


arguments - https://opentutorials.org/course/743/6548





arguments란 함수에서 인자와 관련된 정보를 가지고 있는 객체 사용방법은 배열과 유사해서 유사배열이라고 한다.


매개변수 - function sum(a) 에서 a이다.

인자 - a(1) 처럼 호출하는 곳에서 정하는 값이다. 즉 인자를 매개변수로 전달한다고 생각하면 된다.




function sum(){ //인자가 몇개 들어올지 모르기 때문에 비워두고 안에있는 for문으로 인자의 개수를 체크한다.

    var i, _sum = 0;    

    for(i = 0; i < arguments.length; i++){  //arguments는 자바스크립트가 가지고 있는 특수한 유사배열 객체이다. arguments는 인자로 전달받은 인자의 개수를 담는다. 맨 아래 구문에서 sum(1,2,3,4)으로 4개의 인자를 주었으므로 arguments.length는 4가 된다.

        document.write(i+' : '+arguments[i]+'<br />');

        _sum += arguments[i]; //_sum에는 argument[0],argument[1],argument[2],argument[3] 의 값들을 모두 더해서 저장한다. 1+2+3+4=10

    }   

    return _sum;

}

document.write('result : ' + sum(1,2,3,4)); //결과값은 10이다.








매개변수의 수

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

하나는 함수.length, 다른 하나는 arguments.length이다. 

arguments.length는 함수로 전달된 실제 인자의 수를 의미하고, 함수.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,  둘다 0이 나와서 차이점을 알 수 없음.

one('val1', 'val2');  // one.length 1 arguments 2, one.length가 1인이유는 arg1의 개수를 세기 때문이며 arguments.length가 2인 이유는 val1, val2의 개수를 세기 때문이다.

two('val1');  // two.length 2 arguments 1, two.length가 2인 이유는 arg1, arg2의 개수를 세기 때문이며 arguments.length가 1인 이유는 val1의 개수를 세기 때문이다.