# 함수 선언문
함수 선언문은 일반적인 프로그래밍 언어에서 함수 선언과 유사합니다.
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
'JAVASCRIPT' 카테고리의 다른 글
[JavaScript] 07. 클로저 (0) | 2020.10.26 |
---|---|
[JavaScript] 06. 자바스크립트 함수(일급함수, 고차함수, 화살표 함수, 즉시 실행 함수) (0) | 2020.10.26 |
[JavaScript] 04. 자바스크립트 함수(Function) (0) | 2020.10.24 |
[JavaScript] 03. 자바스크립트 기본 문법02 (0) | 2020.10.24 |
[JavaScript] 02. 자바스크립트 기본 문법01 (0) | 2020.10.22 |