JavaScript의 익명 함수와 선언적 함수에 대해

josworks27·2020년 3월 10일
0

TIL(Today I Learned)

목록 보기
34/73
post-thumbnail

익명 함수

함수의 형태를 갖고 있지만, 특정한 이름을 갖고 있지 않는 함수이다.

// 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('실행');
}

참고 자료

0개의 댓글