티스토리 뷰

함수에는 arguments라는 변수에 담긴 숨겨진 유사 배열이 있다. 이 배열에는 함수를 호출할 때 입력한 인자가 담겨있다. 아래 예제를 보자.

 

유사배열이래.

 

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

 

함수의 정의부분에서 인자에 대한 구현이 없음에도 인자를 전달 할 수 있는 것은 왜 그럴까? 그것은 arguments라는 특수한 배열이 있기 때문이다.

 

<script>
            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
</script>

 

매개 변수 , 아귀먼츠.랭스

 

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

 

arguments.length는 함수로 전달된 실제 인자의 수를 의미하고, 함수.length는 함수에 정의된 인자의 수를 의미한다. 

 

유용하게 사용되니 확실하진않지만 한번은 보고넘어가시라~

'코딩 공부 > 생활 코딩' 카테고리의 다른 글

생활 코딩 - 함수의 호출  (1) 2021.08.18
생활 코딩 - 클로저  (0) 2021.08.18
생활 코딩 - 값으로서의 함수와 콜백  (0) 2021.08.18
생활 코딩 - 유효범위  (0) 2021.08.18
생활 코딩 - 객체  (4) 2021.08.17
댓글
© 2022 chanchaning