12장 - 함수

Jaeseok0106·2022년 3월 17일
0

자바스크립트공부

목록 보기
8/14

자바 스크립트에서 가장 중요한 핵심 개념이다.
일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행단위로 정의한 것을 함수라고 한다.

내부로 입력을 전달받는 변수를 매개변수, 입력을 인수, 출력을 반환값이라고 한다.

  • 함수의 정의와 호출
function add(x,y){
  return x+y;
} // 함수의 정의

let result = add(2,5); // 함수의 호출

console.log(result);
  • 함수를 사용하는 이유
  1. 코드의 재사용 측면에서 매우 유용 -> 계속 호출할 수 있기 때문에
  2. 유지보수의 편의성을 높이고 코드의 신뢰성을 높임
  3. 코드의 가독성을 향상시킴.
  • 함수 리터럴의 구성 요소
  1. 함수 이름

    • 식별자 네이밍 규칙 준수
    • 함수 이름은 함수 몸채 내에서만 참조할 수 있는 식별자
    • 함수 이름은 생략 가능, 이름이 있으면 기명 함수, 없으면 무명/익명 함수라고 부름.
  2. 매개변수 목록

    • 매개변수를 소괄호로 감싸고 쉼표로 구분
    • 함수를 호출할 때 지정한 인수가 순서대로 할당. 순서에 의미가 존재
    • 매개변수는 함수 몸채 내에서 변수와 동일하게 취급
  3. 함수 몸체

    • 일괄적으로 실행될 문들의 하나의 실행 단위로 정의한 코드 블록
    • 함수 호출에 의해 실행됨.

함수는 객체다.

  • 함수의 정의
function add(x,y){
  return x+y;
} // 함수 선언문

var add = function (x,y) 
{
  return x+y;
}; // 함수 표현식.
  1. 함수 선언문은 함수 이름 생략 불가
  2. 함수 선언문은 표현식이 아닌 문이다.
  3. 생성된 함수를 호출하기 위해 함수 이름과 동일한 식별자를 암묵적으로 생성한 후 거기에 함수 객체를 할당하는 방법
  4. 함수 객체를 가리키는 식별자로 호출
  • 함수 생성 시점과 함수 호이스팅
  1. 함수 선언문으로 정의한 함수와 표현식으로 정의한 함수의 생성 시점은 다르다.
  2. 함수 선언문도 런타임 이전에 먼저 실행되며, 함수 선언문 이전에 함수를 참조할 수 있고 호출도 가능하다. 이러한 동작을 함수 호이스팅이라고 한다.
    3. 함수 표현식의 함수 리터럴도 할당문이 실행되는 시점에 평가되어 함수의 객체가 된다.
  • 함수 호출 & 매개변수와 인수
  1. 매개변수는 함수를 정의할 때 선언하고, 내부에서 변수와 동일하게 취급한다.
  2. 매개변수는 함수 몸체 내부에서만 참조할 수 있고 외부에서는 참조할 수 없다.
  3. 매개변수의 개수와 인수의 개수가 일치하는지 체크하지 않는다. 인수가 부족하여 할당이 안된 매개변수의 값은 undefinded로 할당된다.
  4. 매개변수보다 인수가 더 많으면 초과된 인수는 무시한다.
    5. 매개변수는 최대 3개 이상을 넘지 않는 것을 권장한다. -> 이상적인 함수는 한 가지 일만, 가급적 작게 동작해야하기 때문.
  • 재귀 함수
  1. 함수가 자기 자신을 호출하는 것을 재귀 호출이라 하는데, 재귀 호출을 수행하는 함수가 재귀 함수이다.
  2. 재귀 함수 내에는 반드시 멈출 수 있는 탈출 조건이 존재해야 한다.
  3. 반복문 보다 재귀 함수를 사용하는 것이 직관적으로 이해하기 쉬울 경우에만 한정적으로 사용한다.
  • 중첩 함수
  1. 함수 내부에 정의된 함수를 중첩 함수(내부 함수)라고 부름
  2. 중첩 함수를 포함하는 함수는 외부 함수
  3. 일반적으로 중첩 함수는 외부 함수를 돕는 역할을 수행한다.
  • 콜백 함수
  1. 함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수를 콜백 함수라고 부름.
  2. 콜백 함수를 전달받은 함수는 고차 함수라고 부름.
  3. 고차 함수는 콜백 함수를 자신의 일부분으로 합성.
  4. 고차 함수는 매개변수를 통해 전달받은 콜백 함수의 호출 시점을 결정하여 호출
  5. 즉, 콜백 함수는 ‘고차 함수’를 통해 호출되며, 필요에 따라 콜백 함수에 인수까지 전달함.

0개의 댓글

관련 채용 정보