-
[JS/Arguments] 자바스크립트, Arguments 객체에 대해서.Frontend 2019. 4. 24. 15:40
Javascript, The Arguments Object
function makeSum (num1, num2) { return num1 + num2; } makeSum(4, 7);
만약에 위와 같이 어떤 숫자의 합을 구하는 간단한 function을 만들었다고 해보자.
함수 파라미터로 num1, num2에 각각 숫자를 넣으면 그 숫자의 합을 구해서 return하는 함수이다.
그런데 위와 같이 함수를 만들면 우리는 딱 2개의 숫자만 더할 수 있다.
그러니까 즉, 함수를 처음 만들 때 지정한 parameter의 개수만큼만 가져와서 연산할 수 있다는 말이다.
그렇다면 만약에 어떤 경우에는 파라미터로 3, 5, 6, 8을 넘겨주고 이 숫자들의 합을 구하고
어떤 경우에는 7, 34, 2, 7, 8, 23, 4 이 숫자들을 넘겨주어 합을 구하고 싶다면 어떻게 해야할까?
이럴 때 우리는 arguments라는 것을 사용할 수 있다.
function makeSum () { var sum = 0; for(var i=0; i<arguments.length; i++) { sum += arguments[i] } return sum; } makeSum(4, 7, 8, 9, 10); makeSum(1, 2, 3, 4); makeSum(67, 42, 10, 7, 8, 91, 11);
자바스크립트 함수의 arguments속성은 MDN에서 아래와 같이 정의하고 있다.
Arguments is an Array-ike object accessible inside functions that contains the values of the arguments passed to that function.
: arguments란 어떤 함수로 전달되는 인자들의 값을 가지고 있는 배열과 유사한 형태의 객체로 그 함수의 내부에서 접근할 수 있다.
그러니까 즉 함수로 넘어오는 파라미터들을 유사 배열의 형태로 가져온다!
그렇기 때문에 위의 예제와 같이 배열 다루듯이 for문을 돌려서 사용할 수 있다.
반응형'Frontend' 카테고리의 다른 글
[JS/스코프] 자바스크립트 스코프(scope)와 즉시실행함수(IIFE) (0) 2019.05.02 [JS/반복문] 자바스크립트, 가장 기초적인 반복문 for문의 동작 원리 (for문/이중for문/break/continue) (4) 2019.04.28 [JS/클로져] 자바스크립트의 Lexical scoping과 Closure (2) 2019.04.23 [JS/입력값검증] 숫자 3자리마다 ,(콤마)찍기 / 숫자와 콤마를 제외한 문자 입력 제한 / 0으로 시작 못하게 제한 / keyup이벤트 (0) 2019.04.19 [자바스크립트 기본서 추천] Do it! 웹프로그래밍을 위한 자바스크립트 기본편 (0) 2019.04.14 COMMENT