매개변수 개수에 따른 함수호출법
전달인자의 개수에 따라 서로 다른 처리를 해줘야하는 함수
호출된 인자 개수에 상관없이 이들 각각의 값을 모두 더해 리턴하는 함수의 예제이다.
이전 포스팅에서 확인 해보았듯이, 전달인자의 수와 호출함수의 매개변수의 수가 달라도 호출이 가능한 것을 이용한 예제이다.
function sum(){ var result = 0; for(var i=0; i<arguments.length; i++){ result = result+arguments[i]; // result(0) = 0 + 1 // result(1) = 1 + 2 console.log(result); } return result; } console.log(sum(1,2)); // 출력값 3
console.log(sum(1,2,3)) // 출력값 6
위의 예시에 대한 해설은 다음과 같다.
1. arguments(전달인자)의 length는 2이다.
2. for문을 통해 0번인덱스, 1번인덱스 총 두번의 루프가 돈다.
3. for문이 끝나면 result를 반환한다.
예시를 보면 함수의 개수를 arguments 객체로 받아서 for문으로 값이 끝날때까지 더한 후 result를 반환한다.
arguments객체는 유사배열 객체 로써, 전달받은 인자로 배열과 비슷한 형태를 가진다.
1. 함수로 호출할 때 넘겨진 인자(배열형태) : 함수를 호출할 때 첫번째 인자는 0번 인덱스, 두번째 인자는 1번 인덱스 등등
2. length 프로퍼티 : 실제 배열의 length가 아닌 유사배열 객체로서의 length. 함수를 호출할때 넘겨지는 인자의 개수를 의미
3. callee 프로퍼티 : 현재 실행 중인 함수의 참조값 (위의 객체에서는 sum() 함수가 callee 프로퍼티가 된다.)
* 전달인자의 개수에 상관없이 유사배열객체의 length 프로퍼티로 바인딩을 할 수 있다.
'JavaScript' 카테고리의 다른 글
[javascript] var, let, const 차이점 (0) | 2020.02.05 |
---|---|
[javascript] 배열 문자열 검색 (0) | 2020.02.01 |
[Javascript] 함수의 매개변수(arguments 객체) (0) | 2018.04.27 |
[Javascript] 자바스크립트 참조(객체)타입 (0) | 2018.04.16 |
[Javascript] 기본 데이터 타입 (0) | 2018.04.12 |