함수 선언식은 호이스팅에 영향을 받는다.
표현식은 X
→ 따라서 표현식으로 쓰는 게 에러 관리나 추적에 훨씬 용이하다.
→ 함수 선언식에서도 전부 가능.
JS 엔진은 함수표현식으로 선언을 할 때는 익명함수를 할당한 변수명과 같은이름을 함수에 붙이고, 함수선언식으로 선언할 때는
function foo(){
console.log('foo');
}
->
var foo = function(){
console.log('foo');
}
와 같이 선언을 하게 된다.
함수 선언식, 함수 표현식, 함수 생성자함수를 사용한 방법 모두 내부적으로는 Function() 생성자를 사용하여 생성되므로 생성된 함수들은 내부 [[prototype]] 링크로 Function.prototype을 갖는다.