함수 선언식과 함수 표현식은 언제 호출할 수 있을까 빠른 답 함수 선언식은 실행 전 평가 단계에서 함수 객체까지 준비되어, 선언 위치보다 앞에서도 호출할 수 있습니다. 함수 표현식은 변수에 함수 값이 할당된 뒤에 호출할 수 있습니다. const 와 let 함수 표현식은 초기화 전 접근 시 TDZ 때문에 ReferenceError 가 발생합니다. 공통 유틸 함수는 선언식이 읽기 쉽고, 콜백·조건부 할당·함수 조합에는 표현식이 잘 맞는 경우가 많습니다. 목차 한눈에 비교 시간 흐름으로 이해하기 왜 헷갈리는가 호이스팅되지 않는다는 말의 함정 호출 가능 시점과 실제 출력 var, let, const의 오류 차이 Node.js에서 직접 확인하기 이름 있는 함수 표현식 블록 스코프에서의 주의점 코드 작성 기준 한눈에 비교 정의 방식 함수 선언식은 function name() {} 형태의 선언문이고, 함수 표현식은 함수 값을 변수나 상수에 담는 방식입니다. 호출 가능 시점 함수 선언식은 선언 위치보다 앞에서도 호출할 수 있지만, 함수 표현식은 할당문 실행 이후에 호출할 수 있습니다. 초기 상태 함수 선언식의 이름은 함수 객체로 초기화됩니다. let 과 const 로 선언한 함수 표현식의 이름은 초기화 전까지 TDZ에 있습니다. 오류 유형 const 나 let 함수 표현식을 초기화 전에 읽으면 ReferenceError 가 발생하고, var 함수 표현식을 할당 전에 호출하면 보통 TypeError 가 발생합니다. 코드 의도 선언식은 스코프 안에서 사용할 이름 있는 함수를 정의하는 느낌이 강하고, 표현식은 함수를 값처럼 전달하거나 조합한다는 의도가 더 잘 드러납니다. 이름 범위 함수 표현식도 이름을 가질 수 있지만, 그 이름은 보통 함수 내부에서만 사용할 수 있습니다. 시간 흐름으로 이해하기 코드 평가 시작 JavaScript 엔진은 실행 전에 현재 스코프의 선언을 먼저 처리합니다. → 함수 선언 초기화 함수 선언식은 이름과 함수 객체가 함께 준비됩니다....