실행 시점을 개발자가 결정 + 재사용
→ ‘코드의 재사용’ 측면으로 유용
자바스크립트의 함수 = 객체 타입의 값 → 함수도 함수 리터럴로 생성 가능
함수 리터럴의 구성 요소
함수와 객체의 차이점
함수 선언문
function add(x, y) {
return x + y;
};
함수 리터럴과 형태 동일 BUT,
함수 이름 생략 불가
‘표현식이 아닌' 문
(할당해보면 함수가 아니라 undefined 할당됨)
이건 뭐지? add에 함수가 할당되었는데?
// 중의적인 코드 표현 let add = function add(x, y) { // 사실 여기서 함수명은 필요가 없다 return x + y; } console.log(add(2, 5)); // 7→ 코드 문맥에 따라 달라짐
{} 단독(함수 선언문): {} = 블록문
function foo(x, y) { return x + y; } console.log(add(2 + 5)); // add -참조-> function add() {}
함수 이름을 외부에서 참조 가능
함수 객체를 가리키는 식별자를 함수 이름과 동일하게 생성
{}이 값으로 평가되어야 함(변수에 할당, 즉시 실행 함수 등): {} = 객체 리터럴(함수 리터럴 표현식)
‘표현식’인 문
함수 이름을 함수 내부에서만 참조 가능