Study/JavaScript

What are the advantages of function expressions? 함수표현식 vs 함수 선언식

더 멋진 세상을 꿈꾸는 개발자 2020. 4. 30. 13:05

 

 

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

 

함수 선언식은 코드를 구현한 위치와 관계없이 JS의 특징인 호이스팅에 따라 브라우저가 js를 해석할 때 

위로 끌어 올려진다.

 

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

 

//실행 전
logMessage();
sumNumbers();

function logMessage(){
	return 'worked';
}

let sumNumbers = function() {
	return 10 + 20;
};

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

 

//실행 시

function logMessage(){
	return 'worked';
}

let sumNumbers;

logMessage(); // 'worked'
sumNumbers(); // Uncaught TypeError: sumNumbers is not a function

sumNumbers = function(){
	return 10 + 20;
};

 

"호스팅에 영향을 받지 않는다"는 것 외에도 함수 표현식의 다른 장점들이 있다.

 

- 클로져로 사용.

- 콜백으로 사용 (다른 함수의 인자로 넘길 수 있음)

 

 

** 함수 표현식으로 클로져 생성하기

 

**함수 표현식을 다른 함수의 인자 값으로 넘기기 (콜백)

 

클로저와 콜백은 다음시간에 또 다루어보자.

 

 

참조 :

 

https://pks424.tistory.com/entry/%ED%95%A8%EC%88%98-%ED%91%9C%ED%98%84%EC%8B%9D-vs-%ED%95%A8%EC%88%98-%EC%84%A0%EC%96%B8%EC%8B%9D

 

함수 표현식 vs 함수 선언식

함수 선언식 - Function Declarations 일반적인 프로그래밍 언어에서의 함수 선언과 비슷한 형식이다. function 함수명() { 구현 로직 } Js Copy // 예시 function funcDeclarations() { return 'A function decla..

pks424.tistory.com