이름이 있지만 Function Expression인 JavaScript의 함수
이제 이름을 가지지만 표현식에 참여하기 때문에 Function Expression이 될 함수를 만들어 봅시다:
+function func() {
console.log('!');
}
흥미롭게도, 이름 func으로는
우리 함수에 접근할 수 없으며, 이는
오류를 발생시킵니다:
+function func() {
console.log('!');
}
func(); //!! 오류 발생
우리 함수를 호출할 수 있도록 하려면, 그것을 어떤 변수에 할당해야 합니다:
let test = function func() {
console.log('!');
};
test(); // '!' 출력
다시 한번: 함수 표현식인 함수는 그 이름으로 호출될 수 없습니다. 그러한 함수는 오직 그 함수가 기록된 변수를 사용해서만 호출할 수 있습니다.
그럼에도 불구하고, 함수 표현식은 함수 이름을 가질 수 있으며, 이는 구문적으로 정확합니다. 이것이 왜 필요한지는 다음 강의에서 분석하겠습니다.
요약해 봅시다: 함수가 Function Declaration 또는 Function Expression인 것은 이름이 있거나 없기 때문이 아니라, 표현식의 참여자인지 아닌지 때문입니다.
위에서 보셨듯이, 이름 없는 함수는 Function Declaration으로 간주될 수 있으며, 이름 있는 함수는 Function Expression이 될 수 있습니다.