함수의 형태를 갖고 있지만, 특정한 이름을 갖고 있지 않는 함수이다.
// function과 () 사이에 특정한 함수 이름이 존재하지 않는다.
// foo라는 변수에 할당하고 있지만, 이는 함수를 선언하는게 아니라 'foo' 라는 변수에 함수를 할당하는 것이다.
const foo = function() {...}
함수를 만드는 일반적은 방식으로 익명 함수와 다르게 특정한 이름을 갖고 있는 함수이다.
// function과 () 사이에 'foo'라는 특정한 함수 이름이 존재한다.
function foo() {...}
가장 큰 차이로는 호출 순서의 차이를 말할 수 있다. 예를 들어 'foo' 라는 함수를 먼저 호출하고 난 뒤에 foo 함수를 선언하면, 선언적 함수의 경우는 호이스팅으로 인하여 에러가 발생하지 않는다.
foo(); // 실행
function foo() {
console.log('실행');
}
하지만 익명 함수는 글로벌 영역에 먼저 함수가 할당되지 않기 때문에 함수를 먼저 호출하면 에러가 발생한다.
foo(); // Uncaught ReferenceError: Cannot access 'foo' before initialization
const foo = function() {
console.log('실행');
}