[TIL] 19 - JavaScript) arguments , 인자 갯수에 따른 동작 변화 함수

1745 단어 JavaScriptJavaScript

Q. 여러 인자를 받았을 때 인자의 개수에 따라 다른 형태를 리턴해주세요.

일반적으로 함수를 사용할 때는 함수에 주어진 인자(argument)개수에 맞춰 정확하게 호출해야 하지만, JavaScript는 예외이다.

  • 함수의 인자 개수보다 적게 함수를 호출했을 때
    -> 비게 된 인자는 undefined 값이 할당된다.
  • 함수의 인자 개수보다 많게 함수를 호출했을 때
    -> 따로 에러가 뜨지않고 초과된 인수는 무시된다.

함수를 작성할 때, 런타임 시 호출된 인자의 개수를 확인하고 그 개수에 따라 동작이 달라져야 할 때 arguments 객체를 사용한다.

자바스크립트에서는 함수를 호출할 때,
인수들과 함께 arguments 객체가 함수 내부로 전달되기 때문인데, arguments 객체는 함수를 호출할 때 넘긴 인자들이 배열형태로 저장된 객체이다.
하지만 배열 형태일뿐 실제 배열이 아닌 '유사 배열 객체' 이다.

arguments 객체 직접 알아보기

	arguments 객체는 세 부분으로 구성되어 있다. (_proto_ 프로퍼티 제외)
  • 함수를 호출할 때 넘겨진 인자 >> 첫 번째 인자는 index 0, 두 번째 인자는 index 1 (배열 형태)

  • length 프로퍼티 >> 호출할 때 넘겨진 인자의 개수

  • callee 프로퍼티 >> 현재 실행중인 함수의 참조값 (사진의 add()함수)

length 프로퍼티가 있어 배열과 유사하게 동작하지만, '유사 배열 객체' 이므로 배열 메서드는 사용할 수 없다.

arguments 객체를 활용하는 곳

  • 매개변수 개수가 정확하게 정해지지 않은 함수를 구현할 때
  • 전달된 인자의 개수에 따라 서로 다른 처리를 해줘야 하는 함수를 개발할 때
function meetAt(year, month, date) {
  let length = arguments.length;

참고링크 1
참고링크 2

좋은 웹페이지 즐겨찾기