Thief of Wealth

다음에 바로 기억나게 하기위해 한번더 정리!

 

- 함수 선언식

: 함수 선언식으로 선언된 함수는 나중 사용을 위해 저장되고, 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
    };
}());
profile on loading

Loading...