power-girl0-0

[함수지향] arguments 본문

언어/Javascript

[함수지향] arguments

power-girl0-0 2021. 2. 5. 12:00
728x90

생활코딩 javascript를 참고하여 공부하였습니다.

스스로 공부한 것을 정리하고 복습하기 위한 목적으로 작성하였습니다.

( 출처 :  https://opentutorials.org/course/743)


 arguments 

함수에는 arguments라는 변수에 담긴 숨겨진 유사 배열이 있다.

이 배열에는 함수를 호출할 때 입력한 인자가 담겨있다.

 

아래 예제를 통해서 자세히 알아보자.

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));

예제에 대한 결과는 아래 사진과 같이 출력된다.

sum함수는 매개변수가 하나도 없는데, 마지막 라인에서 4개의 인자가 전달되고 있다.

 

위 예제에서 사용되고 있는 for문의 조건문을 보면, 선언하지도 않은 arguments를 사용하는 것을 볼 수 있다.

arguments는 선언하지 않아도 되는 약속된 것이다.

arguments 안에는 arguments라는 유사배열이 있어서, 사용자가 전달한 4개의 인자를 저장하고 있다.

 

이를 통해서, 전달받은 인자의 값을 순차적으로 가져올 수 있다.

arguments는 사실 배열은 아니다. 실제로는 arguments 객체의 인스턴스다.


 매개변수의 수 

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

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

arguments.length는 함수로 전달된 실제 인자의 수를 의미하고, 함수.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
728x90
Comments