앞서 살펴본 아티클에서, Javascript 함수의 객체로서의 특징을 살펴보았습니다. 이번 아티클에서는 값으로서 취급되는 함수의 특성을 살펴보도록 하겠습니다. 분류해서 살펴보겠지만, 결국 앞서 살펴본 값들을 사용하는 패턴에 함수를 그대로 적용시킬 수 있다는 정도의 의미로 이해해주시면 됩니다.
변수 or 프로퍼티의 값으로 할당할 수 있다
함수는 숫자, 문자열과 같은 값과 마찬가지로 변수나 프로퍼티의 값으로서 할당할 수 있게 됩니다. 객체의 원소로도 할당이 가능합니다. 예제를 통해 살펴봅시다.
var val = 2874;
var funcVar = function() {
return 'This is a function.';
}
console.log(funcVar());
var objVar = {};
objVar.func = function() {
return 'This is a function in the property.';
}
console.log(objVar.func());
// This is a function.
// This is a function in the property.
위에서 선언된 val이라는 변수는 2874라는 값을 저장하고 있습니다. funcVar에는 함수를 값의 형태로 대입하였는데, 이 경우에는 해당 변수에 직접 정의한 함수를 참조시키고 있습니다. 변수 또는 프로퍼티에 함수를 대입할 경우 해당 함수를 참조하는 경우이므로, ( )를 붙여 해당 함수를 실행할 수 있게 됩니다.
함수의 인자로 전달해 사용
함수 자체를 다른 함수의 파라미터에 인자로서 전달하여 사용하는 것도 가능합니다. 아래의 예제처럼, 특정 함수를 선언하고 함수를 인자로 받아 실행하는 형태로 함수 표현식을 사용해 봅시다.
var funcVar = function(func){
func();
};
funcVar(function(){
console.log('function as the argument.');
});
var funcArg = function(){
console.log('funcArg!');
};
funcVar(funcArg);
// function as the argument.
// funcArg!
함수 표현식을 통해 funcVar라는 함수를 정의했습니다. 이 함수에서는 인자로 받은 함수를 실행하게 됩니다. 첫 번째로는 익명함수를 통째로 파라미터 안에 정의하여 인자로 전달했습니다. 그리고 두 번째 실행문에서는 funcArg라는 또다른 함수 변수를 선언하고, 해당 함수 변수를 funcVar의 인자로 전달하였습니다.
리턴 값으로 활용하기
값으로서의 함수가 갖는 특성 마지막입니다. 바로 return 값으로 활용이 가능하다는 점 입니다. 간단한 함수 하나를 선언해 보겠습니다.
var funcVar = function(){
return function(){
console.log("function as a value");
}
};
var newVar = funcVar();
newVar();
// function as a value
위와 같이 익명함수를 리턴하는 함수 funcVar를 선언하였습니다. 그리고 그 funcVar를 실행한 결과를 newVar 변수에 대입하였습니다. newVar에는 return 값이 대입(참조)되었습니다. 결국 newVar는 또 하나의 함수 변수가 되었습니다. 그러므로, newVar( ); 형태로 실행한 결과, 스트링 출력문이 실행되었습니다.
'Programming > Javascript' 카테고리의 다른 글
7. Javascript 함수 (3) - 함수 프로퍼티 2 (0) | 2022.09.22 |
---|---|
7. Javascript 함수 (3) - 함수 프로퍼티 1 (0) | 2022.09.20 |
7. Javascript 함수 (2) - 함수의 객체 특성 1 (0) | 2022.09.12 |
7. Javascript 함수 (1) - 함수 선언 2 (0) | 2022.09.06 |
7. Javascript 함수 (1) - 함수 선언 1 (2) | 2022.09.05 |