[Javascript] 함수

배석재·2021년 6월 28일

Study

목록 보기
3/14
post-thumbnail

안녕하세요.
지난 포스팅에 이어서 모던 자바스크립트 Deep Dive 책을 바탕으로 스터디를 진행하면서 정리한 내용을 기술해보려합니다!


1. 함수

수학의 함수와 같이 입력(input)을 받아 출력(output)을 내보내는 일련의 과정(statement)을 정의한 것
이런 과정을 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 만든 것

1-1. 함수를 사용하는 이유

  • 미리 정의된 함수를 재사용함으로써 비용이 절감됨.
  • 또한 유지보수의 편의성을 높이고 실수를 줄여 코드의 신뢰성을 높이는 효과가 있음.
  • 적절한 함수 이름을 사용하여 함수의 역할을 파악하여 코드의 가독성을 향상시킴.

1-2. 함수 리터럴

함수 리터럴은 function 키워드, 함수 이름, 매개 변수 목록, 함수 몸체로 구성

1-3. 함수 정의

1-4. 함수 호출

1-4-1. 매개변수와 인수

1-4-2. 인수 확인

아래의 예제는 인수의 개수는 확인하고 있지 않지만 arg 객체를 통해 인수 개수를 확인할 수도 있습니다.

아래의 예제는 인수가 전달되지 않은 경우 단축 평가를 사용해 매개변수에 기본값을 할당하는 방법입니다.

1-4-3. 매개변수의 최대 개수

  • 이상적인 함수의 매개변수 개수는 0개이며 적을수록 좋음
  • 매개변수의 개수가 많다는 것은 함수가 여러가지 일을 한다는 증거이므로 바람직하지 않음
  • 이상적인 함수는 한 가지 일만 해야 하며 가급적 작게 만들어야 함
  • 따라서 매개변수는 최대 3개 이상을 넘지 않는 것은 권장함

1-4-4. 반환문

함수는 return 키워드와 표현식(반환값)으로 이뤄진 반환문을 사용해 실행 경과를 함수 외부로 반환(return)할 수 있음.

  • 반환문은 함수의 실행을 중단하고 함수의 몸체를 빠져나감.
  • 반환문 이후에 다른 문이 존재하면 그 문은 실행되지 않고 무시됨.

1-5. 참조에 의한 전달과 외부 상태의 변경

1-6. 다양한 함수의 형태

1-6-1. 즉시 실행 함수

1-6-2. 재귀 함수

반복되는 처리를 위해 사용하는 함수

  • 함수 표현식

1-6-3. 중첩 함수

  • 함수 내부에 정의된 함수를 중첩 함수(nested function) 또는 내부 함수(inner function)
  • 중첩 함수를 포함하는 함수는 외부 함수(outer function)
  • 중첩 함수는 외부 함수 내부에서만 호출 가능
  • 일반적으로 자신을 포함하는 외부 함수를 돕는 헬퍼 함수(helper function)의 역할

1-6-4. 콜백 함수

함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수

1-6-5. 고차 함수

매개 변수를 통해 함수의 외부에서 콜백 함수를 전달받은 함수

1-7. 순수함수와 비순수 함수

1-7-1. 순수함수

  • 동일한 인수가 전달되면 언제나 동일한 값을 반환하는 함수
  • 어떤 외부 상태에도 의존하지 않고 오직 매개변수를 통해 함수 내부로 전달된 인수에게만 의존해 반환값을 생성
  • 함수 외부의 상태를 변경하지 않음

1-7-2. 비순수 함수

  • 반대로 함수의 외부 상태에 따라 반환값이 달라지는 함수
  • 외부 상태에 의존하는 함수
  • 함수의 외부 상태를 변경하눈 부수효과가 있음


이상으로 함수에 대한 포스팅을 마치도록 하겠습니다!

profile
"personality begins Where Comparison ends"

0개의 댓글