자바스크립트의 함수는 모듈화 처리나 클로저, 객체 생성 등 자바스크립트의 근간이 되는 많은 기능을 제공하고 있습니다.
// 함수 선언문 방식
function add(x, y) {
return x + y;
}
console.log(add(3, 4)); // (출력값) 7
var add = function (x, y) {
return x + y;
};
var plus = add;
console.log(add(3, 4)); // (출력값) 7
console.log(plus(5, 6)); // (출력값) 11
// 기명 함수 표현식의 함수 호출 방법
var add = function sum (x, y) {
return x + y;
};
console.log(add(3, 4)); // (출력값) 7
console.log(sum(3, 4)); // 에러
var add = function add(x, y) {
return x + y;
}
즉, 변수명 add와 같으므로 함수 이름으로 함수가 호출되는 것처럼 보이지만 실제로는 add 함수 변수로 함수 외부에서 호출이 가능하게 된 것입니다.
// 함수 표현식으로 구현한 팩토리얼 함수
var factorialVar = function factorial (n) {
if(n <= 1) {
return 1;
}
return n * factorial(n-1);
};
console.log(factorialVar(3)); // (출력값) 6
console.log(factorial(3)); // 에러
//Function() 생성자 함수를 이용한 add() 함수
var add = new Function('x', 'y', 'return x + y');
console.log(add(3, 4)); // (출력값) 7
add(2, 3); // (출력값) 5
// 함수 선언문 형태로 add() 함수 정의
function add(x, y) {
return x + y;
}
add(3, 4); // (출력값) 7
add(2, 3); // 에러 (uncaught type error)
// 함수 표현식 형태로 add() 함수 정의
var add = function (x, y) {
return x + y;
}
add(3, 4); // (출력값) 7