Language/JavaScript

JavaScript 05. 함수

ej503 2022. 8. 28. 13:02
모던 자바스크립트 Deep Dive 자바스크립트의 기본 개념과 동작 원리를 읽고 정리한 내용입니다.

 

12.1 함수란?

 

  • 함수 호출이란 인수를 매개변수를 통해 함수에 전달하면서 함수의 실행을 명시적으로 지시하는 것이다.

 

12.4 함수 정의

 

  • 함수는 함수 이름으로 호출하는 것이 아니라 함수 객체를 가리키는 식별자로 호출한다.
  • 함수는 값처럼 변수에 할당할 수도 있고 프로퍼티의 값이 될수도 있으며 배열의 요소가 될 수도 있다. 이처럼 값의 성질을 갖는 객체를 일급 객체라고 한다.
  • 함수 선언문으로 정의한 함수와 함수 표현식으로 정의한 함수의 생성 시점은 다르다.
  • 함수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 특징을 함수 호이스팅이라고 한다.
  • 함수 표현식으로 함수를 정의하면 함수 호이스팅이 발생하는 것이 아니라 변수 호이스팅이 발생한다.

 

12.6 참조에 의한 전달과 외부 상태의 변경

 

  • 원시 값은 값에 의한 전달, 객체는 참조에 의한 전달 방식으로 동작한다. 원시 값은 원본이 훼손되지 않지만 객체는 원본이 훼손된다.

 

12.7 다양한 함수의 형태

 

  • 즉시 실행 함수는 익명 함수를 사용하는 것이 일반적이다.
  • 자기 자신을 호출하는 재귀함수를 사용하면 반복되는 처리를 반복문 없이 구현할 수 있다. 재귀 함수는 자신을 무한 재귀 호출하기 때문에 멈출 수 있는 탈출 조건을 반드시 만들어야 한다. 탈출 조건이 없으면 함수가 무한 호출되어 스택 오버플로 에러가 발생한다.
  • 함수 내부에 정의된 함수를 중첩함수 또는 내부함수라 한다. 그리고 중첩 함수를 포함하는 함수는 외부 함수라고 부른다. 일반적으로 중첩 함수는 자신을 포함하는 외부 함수를 돕는 헬퍼 함수의 역할을 한다.
  • 콜백 함수는 함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수이다. 매개변수를 통해 함수의 외부에서 콜백 함수를 전달받은 함수를 고차함수라고 한다. 콜백 함수의 호출 시점을 결정해서 호출하며 고차 함수는 필요에 따라 콜백 함수에 인수를 전달할 수 있다.
  • 순수 함수는 부수 효과 (어떤 외부 상태에 의존하지도 않고 변경하지도 않는)가 없는 함수이며, 비순수 함수는 부수효과가 있는 함수이다. 순수 함수는 인수를 전달 받으며, 전달 받지 않는 것은 상수와 마찬가지이다.