다음에 바로 기억나게 하기위해 한번더 정리!
- 함수 선언식
: 함수 선언식으로 선언된 함수는 나중 사용을 위해 저장되고, call할떄 실행된다.
ex) function foo() {}
- 함수 표현식
: 함수를 표현식으로 사용하여 정의하고, 함수 표현식은 변수로 저장될 수 있다.
ex) const foo = function () {}
- 차이점
함수 선언식은 코드가 실행되기 전에 로드되어서 호이스팅이 발생하지만
함수 표현식은 인터프리터가 해당 코드 줄에 도달 할 때만 로드한다.
결국, 함수 표현식은 호이스팅되지 않아서, 정의 된 범위에서 로컬 변수의 복사본을 유지할 수 있고
가독성이 더 높다는 장점이 있다.
이런 장점 말고 함수 표현식의 다른 장점도 알아보자.
1. 클로저 사용가능
: 클로저란? 함수가 종료되어도, 렉시컬 스코프의 index와 같은 정보를 유지하는 것.
2. 인자 전달
: 함수 표현식은 중간 임시 변수에 할당 할 필요없이, 함수에 직접 전달할 수 있다.
요로코롬 쓸 수 있다.
productIds.forEach(function showProduct(productId) { ... });
3. IIFE (즉시 주입 함수 표현식)
: IIFE는 함수와 변수가 전역 스코프에 영향을 미치지 않도록 방지하는데 사용된다.
IIFE 내의 모든 속성은 익명 함수로 범위가 지정된다.
요로코롬 쓸 수 있다.
var myModule = (function () {
var privateMethod = function () {
console.log('A private method');
},
someMethod = function () {
console.log('A public method');
},
anotherMethod = function () {
console.log('Another public method');
};
return {
someMethod: someMethod,
anotherMethod: anotherMethod
};
}());
'개발 > FrontEnd Interview' 카테고리의 다른 글
css 값이 0일때 단위를 붙이지 말아야 하는 이유 (0) | 2021.04.06 |
---|---|
호이스팅이란 무엇이고, 왜 지양해야하나? (0) | 2021.04.06 |
웹에서 GIF를 사용하지 말아야 하는 이유 (0) | 2021.04.06 |
라이브러리? 프레임워크? (2) | 2021.04.05 |
ECMA script 란? (0) | 2021.04.05 |