Romantic Developer : )

(Javascript) 자바스크립트 심화 (4) arguments 본문

Romantic Developer/JavaScript

(Javascript) 자바스크립트 심화 (4) arguments

Romantic_Developer 2018. 7. 17. 15:00

안녕하세요~! 

영감을 주는 개발자 방민방민입니다.


오늘은 자바스크립트 심화의 내용을 arguments 라는 것에 대해서 알아보고자 합니다.

기본적으로 함수를 선언할 때에는 아래와 같은 형식으로 선언하게 됩니다.


function = functionName( arg1, arg2, arg3 ... argN)


그러나 자바스크립트에서는 함수의 인자를 자유롭게 넣을 수 있도록 하는 자율성을 개발자에게 제공합니다.

이러한 기능은 편리할수도 있지만 잘못하면 프로그램 전체에 알수없는 큰 오류를 만들어 낼 수도 있기 때문에 반드시 그 개념을 정확하게 이해해야만 합니다.



1. 합구하기 


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

위의 예제에서 선언된 sum() 함수에는 인자가 없습니다. 하지만 맨 아래줄에 sum 함수를 호출할때는 1~4까지 4개의 인자를 전달하고 있습니다. 이와 같이 자바스크립트는 유동적으로 사용자의 입력을 인자로 받을 수 있습니다. 이와같은 인자를 자동적으로 받아들여오는 배열(사실 배열은 아니고 객체이지만)을 'arguments' 라고 생각하면 됩니다. 그렇기 때문에 이 arguments[0]~ arguments[3] 에는 sum(1,2,3,4)에서 인자로 들어온 1~4를 저장합니다. 


그래서 위의 예제는 아래와 같은 값을 출력하게 됩니다.



2. 함수 매개변수의 수


함수의 매개변수의 수는 함수가 선언될 때, 함께 선언됩니다. 그래서 몇개의 인자를 받을것인지를 선언하는 값을 말합니다. 위에서 arguments.length 는 실제 매개변수로 들어온 값의 수를 받아온다면, 실제 functionName.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


one 이라는 함수의 매개변수는 one.length 로 알수 있고, 이는 실제 함수가 선언될때 arg1 로 입력된 단 한개입니다. 그러나 아래에 호출될 때는 val1, val2 두개가 인자로 들어간것을 알수 있으며 이는 arguments 로 그 값을 알 수 있습니다.



오늘 시간에는 정말 간단하게, 매개변수와 인자의 숫자를 구하는 방법에 대하여 살펴 보았습니다.


함수를 선언할때의 매개변수와, 실제 호출할때의 인자의 수는 같아질 수도, 달라질 수도 있습니다.

이는 자바스크립트가 제공하는 편의적인 부분임에는 틀림이 없습니다. 하지만 이러한 개념을 정확히 알고 있지 못한다면 분명 프로그램의 크기가 커졌을 때, 정말 큰 문제로 작용할 수 있습니다. 그렇기 때문에 명확한 개념을 이해하는 것이 중요합니다.


지금까지 영감을 주는 개발자 방민방민 이었습니다.