-
외부 코드가 호출할 수 있는 하위 프로그램으로, 함수에 값을 전달하면, 함수는 값을 반환
-
자바스크립트는 함수를 함수 객체를 가리키는 식별자로 호출
- 함수 선언문으로 생성한 함수 또한 함수 이름이 아닌 엔진에 의해 암묵적으로 생성된 식별자를 호출하는 것
-
JavaScript에서는 함수도 객체
- 자바스크립트의 함수는 1급 객체로, 함수 자체가 값으로 취급
<aside>
📌 < 1급 객체의 특징 >
- 변수나 데이터 구조 안에 담을 수 있음
- 파라미터로 전달할 수 있음
- 반환값으로 사용할 수 있음
- 동적으로 프로퍼티의 할당이 가능
</aside>
함수 선언식
- 일반적인 프로그래밍 언어의 함수 선언 방식
- 함수 선언식은 이름을 생략할 수 없음
- 호이스팅 발생
- 함수 선언문으로 정의한 함수는 런타임 이전 JS엔진의 코드 평가과정에서 함수 이름을 식별자를 생성하고, 함수 객체를 할당
- 이 떄문에 런타임 이전에 이미 함수 객체가 생성되어 있고, 함수 이름과 동일한 식별자에 할당이 되어 있어 선언 이전에도 호출이 가능해짐
- 즉, 함수 선언 이전에 호출하여도 동작함.
add(1, 2); // 3 <= 호이스팅 발생
function add(num1, num2) {
return num1 + num2;
}
add(1, 2); // 3
함수 표현식(함수 리터럴)
- 표현식 내에서 함수를 정의하는 방식
- 함수 이름을 생략한 익명함수로 정의 가능(함수 이름 명시 또한 가능)
- 기본 인자도 작성 가능(default 값)
// ex)
const greeting = function (name = 'Anonymous') {
return `Hi, ${name}`;
}
greeting(); // Hi, Anonymous
화살표 함수(Arrow Function)