ES5 function 사용 방법
1. 함수 선언식 (Function Declaration)
console.log(addDec(1, 2));
function (addDec(n1, n2) {
return n1 + n2;
}
2. 함수 표현식 (Function Expression)
console.log(addExp(3, 4));
var addExp = function(n3, n4) {
return n3 + n4;
}
함수 선언식, 표현식 비교
- 공통점 : 둘 다 호이스팅 되어 scope 최상단에 선언문 수행
- 차이점 : 표현식의 경우, 변수에 function이 할당되기 전에 console.log를 통해 접근을 시도하여 TypeError 발생
- 브라우저는 변수와 함수에 호이스팅을 적용하여 아래와 같이 해석한다.
var addExp;
function (addDec(n1, n2) {
return n1 + n2;
}
console.log(addDec(1, 2));
console.log(addExp(3, 4));
addExp = function(n3, n4) {
return n3 + n4;
}
결론
- function과 var 키워드를 통한 선언은 호이스팅의 영향을 받는다.
- ES5에서 함수 사용 방법에는 함수 선언식과 표현식이 있으며, 표현식의 경우 반드시 변수에 function을 할당한 후에 호출해야한다.
참고