Written by
JJoo
on
on
함수선언문과 함수표현식
함수 선언문
함수를 선언하는 형식
function a () {
return 1;
}
기명 함수 표현식
변수에 이름 있는 함수를 선언하는 형식
var b = function abc(){
return 2;
}
(익명) 함수 표현식
변수에 이름 없는 함수를 선언하는 형식
var c = function(){
return 3;
}
얼마전까지는 모든 브라우저에서 익명 함수 실행시 name property에 값을 할당하지 않아 디버깅할때 힘들어서 주로 기명 함수 표현식을 사용했지만 최근 브라우저에서는 자동으로 변수명을 name property에 할당하기 때문에 주로 익명 함수 표현식을 사용한다.
호이스팅될때 함수선언식은 코드 전체가 끌어올려지지만,
함수 표현식은 변수에 할당되었기 때문에 해당 변수만 상단으로 끌어올려져서 정의(선언)된다.
function a () {
return 1;
}
var b;
var c;
b = function abc(){
return 2;
}
c = function(){
return 3;
}
때문에 함수선언식은 같은 명의 함수를 중복으로 선언했을 때 마지막으로 선언한 함수만 남게되므로 아래에서 예측할 수 없게 값을 출력할 수 있기 때문에 함수선언식보다는 함수 표현식을 사용하는 것이 좋다.
Reference
- 인프런 코어 자바스크립트
Discussion and feedback