728x90
반응형

자바스크립트에서 함수는 일반 객체처럼 값으로 취급된다. 

값으로 취급된다는 것은 어떠한 변수에 값을 담을 수 있는 것처럼 함수를 변수에 담고 함수가 값이 된다는 의미이다.

 

자바스크립트에서 다음과 같이 함수를 생성해보자.

function sum(x, y){
   return x + y;
}

var sum = function(x, y){
   return x + y;
};

위에 정의된 함수도 sum이라는 자바스크립트 변수에 담겨진 일종의 값이 되는 것이다. 자바스크립트의 함수는 변수에 담을 수 있다는 속성을 가지고 있다는 것인데 이는 다른 언어의 함수와 다른 점이다.

참고로 첫 번째 방법을 함수 선언문 방식이라 하고 두 번째 방법을 함수 표현식이라고 한다.

 

함수 표현식은 보통 함수 이름을 넣지 않는데 함수 이름을 넣는 경우를 보자.

var sum = function plusReturn(x, y){
   return x + y;
}

console.log(sum(1, 2)); // 3
console.log(plusReturn(1, 2));// 에러

함수 참조값을 가지는 sum으로 호출 했을 경우는 제대로 실행되지만 함수 이름으로 호출했을 때는 오류가 발생한다. 함수 표현식에서 사용된 함수이름은 외부에서 접근할 수 없기 때문이다. 

 

외부에서 접근할 수 없기 때문에 보통 함수 표현식에 함수 이름은 넣지 않는다. 그러나 함수 이름이 필요할 때가 있다. 바로 재귀함수다.

var refVal = function factorial(a){
   if(a <= 1){
      return 1;
   }
   return a * factorial(a-1);
};

console.log(refVal(3)); //6

 

다음 챕터에서는 함수 호출에 대해 자세히 알아보도록 하겠다.

728x90
반응형

+ Recent posts