Function Declaration
함수 선언문은 아래와 같은 형태로 표현하며 호이스팅이 일어나며 초기화가 동시에 발생한다.
따라서 코드 실행 전에 함수 객체가 메모리에 형성되므로 함수 선언 전에 호출이 되어도 정상적으로 작동한다.
console.log(add(2,3)); //5
function add(a,b) {
return a+b;
}
Fucntion Expression
함수 표현식은 변수에 함수를 할당하는 방식이다. 함수에 변수를 할당하거나 다른 함수의 매개변수로 전달되는 등 유연하게 작동할 수 있지만 호이스팅 시 변수의 값이 초기화 되지 않은 상태로 호이스팅 되기 때문에
함수 선언 전에 호출할 수 없다.
// Error: Cannot access 'add' before initialization
console.log(add(2, 3));
var add = function(a, b) {
return a + b;
};