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
반응형
'Programming > JavaScript' 카테고리의 다른 글
[JavaScript] 클로저에 대해 알아보자 (0) | 2020.07.24 |
---|---|
[JavaScript] 객체 리터럴 방식과 생성자 함수로 만든 객체의 차이 (0) | 2020.07.18 |
[JavaScript] this 바인딩 (0) | 2020.07.07 |