JAVASCRIPT

[JavaScript] 05. 함수 선언문과 함수 표현식

송우든 2020. 10. 25. 01:16
728x90

# 함수 선언문

함수 선언문은 일반적인 프로그래밍 언어에서 함수 선언과 유사합니다.

function 함수명(매개변수1,매개변수2){
	실행 내용;
}

 

 

 

# 함수 표현식

함수 표현식은 어떤 변수에 함수를 할당하여 함수를 생성하는 것을 말합니다.

let 변수명  = function(매개변수1, 매개변수2){
	실행 내용;
};    

 

함수 표현식에는 익명 함수 표현식기명 함수 표현식 두가지가 존재합니다. 

익명 함수 표현식은 위와 같은 형식을 말하며, 기명 함수 표현식은 아래와 같이 표현할 수 있습니다.

let 변수명 = function 함수명(매개변수1){
	실행 내용;
};    

 

기명 함수 표현식을 사용하여 함수를 호출할 때에는 변수명을 이용해서 함수를 호출해야 합니다.

예를 들어 아래와 같은 코드가 있을 때, introduce()를 호출하게 되면 오류가 발생하게 됩니다.

let func = function introduce(name = "송우든"){

    console.log(`나의 이름은 ${name}입니다.`);
};

func();

 

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

함수 선언문과 함수 표현식의 차이점은 크게 두가지가 존재합니다.

 

첫번째는 생성시점에 차이가 있습니다. 

함수 표현식은 코드 실행 시 함수에 도달했을 때 함수를 사용할 수 있는 반면, 함수 선언문호이스팅(Hoisting)영향을 받아 함수 선언문이 정의되기 전에 호출될 수 있 수 있습니다.

 

두번째는 유효범위(스코프) 차이가 있습니다.

엄격 모드에서 함수 선언문 코드 블록 내에 위치하면 블록 내 어디서든 접근이 가능하지만 블록 밖에서는 함수에 접근하지 못합니다.

하지막 함수 표현식은 제대로 동작합니다.

 

추가적으로 함수 선언문과 함수 표현식을 보면  ; 세미콜론의 유무가 다른데요!

자바스크립트에서는 세미콜론의 사용을 강제하지는 않지만, 함수 표현식을 사용할 때에는 변수 선언과 동일하게 세미콜론을 붙여 사용합니다.

 

# 언제 사용해야 할까?

함수 선언문은 함수 선언 전에 호출할 수 있기 때문에 코드를 좀 더 편하게 사용할 수 있고 가독성을 높일 수 있습니다.

반면, 함수 표현식은 조건에 따라 함수의 내용이 달라질 경우 사용하는 것이 좋습니다.

 

 

 

참고 자료 및 사이트 : ko.javascript.info/intro

 

728x90