함수 선언식과 표현식의 차이점

함수 선언식은 호이스팅에 영향을 받지만, 함수 표현식은 호이스팅에 영향을 받지 않는다.

함수 선언식은 코드를 구현한 위치와 관계없이 자바스크립트의 특징인 호이스팅에 따라 브라우저가 자바스크립트를 해석할 때 맨 위로 끌어 올려진다.

예를 들어, 아래의 코드를 실행할 때

//[실행 전]
funcDeclaration();
funcExpression();
 
function funcDeclaration() {
    return console.log('함수 선언식 [ Function Declarations ]');
 }
var funcExpression = function () {
    return console.log('함수 표현식 [ Function Expressions ]');
}

호이스팅에 의해 자바스크립트 해석기는 코드를 아래와 같이 인식한다.

 

위 코드 결과

 

함수 표현식 funcExpression 는 호이스팅이 적용되며 위치가 상단으로 변경되었다.

   var funcExpression;

   funcDeclaration();
   funcExpression();

 

함수 표현식 funcExpression 에  할당될 함수 로직은 호출된 이후에 선언되므로, funcExpression 는 함수로 인식하지 않고 변수로 인식하게된다.

 

 

'Javascript' 카테고리의 다른 글

[Javascript] Promise  (1) 2022.11.17
[JavaScript] 개체 또는 배열에 조건부로 추가  (0) 2022.06.07
Javascript - console.log()  (0) 2022.04.07
[Javascript] 정렬 함수 sort  (0) 2021.12.17
[JavaScript] Object Literals (정리)  (0) 2021.07.14

+ Recent posts