ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바스크립트 기본 - arguments
    JavaScript/생활코딩 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의 개수를 세기 때문이다.



    댓글

Designed by Tistory.