JS. 30 Expressions, Statements

함수 선언문

: 함수를 생성하고, 이름을 지정하는 것
function 키워드 다음에 함수 이름 작성으로 선언
함수 표현식

: 함수 생성 후 변수에 할당하는 것
: 함수는 익명으로 이름이 없음
차이점
호이스팅
함수 선언식은 호이스팅에 영향
함수 표현식은 호이스팅에 영향x
=> 브라우저가 JS를 해석 시 함수 선언식은 호이스팅에 영향을 받아 맨 위로 올려지게 됨

표현식의 경우 코드 실행 전 호출되었기에 오류 발생
정의된 범위에서 로컬 변수의 복사본을 유지 가능하도록 호이스팅 되지 않는다
함수 선언은 호이스팅 되어 코드 실행되기 전에 로드된다. 따라서 오류 없이 alert코드 실행이 된다