함수(Function)

kailyn·2024년 10월 9일

Js

목록 보기
4/11

1. 함수 정의

1-1. 함수 선언문

  • 함수 선언문에서는 함수의 이름을 생략할 수 없다.
  • 함수 표현식에서는 함수명을 생략할 수 있다.

1-2. 함수 호이스팅

  • 함수 선언문은 런타임 이전 자바스크립트 엔진에 의해 먼저 실행 된다. 따라서 함수 선언문 이전에 함수를 참조할 수 있으며 호출할 수도 있다. 함수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 함수 호이스팅이라고 한다.
  • 변수 할당문의 값은 할당문이 실행되는 시점, 런타임에 평가되므로 함수 표현식의 함수 리터럴도 할당문이 실행되는 시점에 평가되어 함수 객체가 된다.
  • 함수 표현식으로 정의한 함수는 반드시 함수 표현식 이후에 참조 또는 호출해야 한다.

2. 함수 호출

2-1. 매개변수와 전달인자

  • 매개변수는 함수 몸체 내부에서만 참조할 수 있다.
  • 함수는 매개변수의 개수와 인수의 개수가 일치하는지 체크하지 않는다.
    • 인수가 부족해서 할당되지 않은 매개변수의 값은 undefined이다.
    • 매개변수보다 인수가 더 많은 경우 초과된 인수는 무시된다.
  • 모든 인수는 암묵적으로 arguments 객체의 프로퍼티로 보관된다.
    • 가변인자 함수 구현 시 유용하게 사용 된다.
  • 인수를 전달하지 않았을 경우, undefined를 전달하였을 경우 ES6에서 도입된 매개변수 기본값을 사용할 수 있다.
  • 매개변수의 최대 개수에 대해 명시적인 제한은 없다.
    • 하지만 이상적인 함수는 한 가지 일만 해야 하며 가급적 작게 만들어야 하므로 최대 3개 이상을 넘지 않는 것을 권장한다.

2-2. 반환

  • 반환문은 리턴 키워드 뒤에 오는 값을 반환한다.
  • 반환 값을 명시적으로 지정하지 않으면 undefined가 반환된다.
  • 반환문을 생략할 수도 있다. 이때도 암묵적으로 undefined를 반환한다.

3. 화살표 함수 기본 문법

  • ES6에서 도입 된 화살표 함수는 function 키워드 대신 화살표를 사용해 좀 더 간략한 방법으로 함수를 선언할 수 있다.
  • 화살표 함수는 항상 익명 함수로 정의한다.
  • 본문이 한 줄인 함수를 작성할 때 유용하다.
profile
나는 할 수 있다...!

0개의 댓글