몽탁이의 개발일기
자바스크립트에서의 함수 본문
자바스크립트에서 함수는 객체입니다.
때문에 값으로 사용할 수 있습니다.
function a(){}
와
var a=function(){}
는 같은 의미를 지니고 있습니다.
또한 함수는 값으로 사용될 수 있기 때문에
var a={
b:function(){
}
}
위와 같이 객체안에 값으로 들어가는 것이 가능합니다.
여기서 a라는 객체안에 있는 b라는 속성(property)에는 값으로 함수가 들어가 있습니다.
이때 객체안에 있는 속성(property)의 값이 함수는 메소드라고 불리게 됩니다.
즉 메소드란 어딘가에 종속되어있는 함수라고 볼 수 있습니다.
함수가 값으로 쓰이는 경우를 더 살펴보겠습니다.
1. 인자로 사용되는 경우
function cal(func,num){
return func(num);
}
function increase(num){
return num+1;
}
function decrease(num){
return num-1;
}
alert(cal(increase, 1));
alert(cal(decrease, 1));
이런 식으로 함수를 인자로 넘겨서 해당 함수를 리턴하는 방식을 사용할 수 있습니다.
2. 리턴 값으로 사용되는 경우
function cal(mode){
var funcs={
plus:function(left,right){return left+right;},
minus:function(left,right){return left-right};
}
return funcs[mode];
}
alert(cal('plus' (1,2)); // plus라는 문자열을 넘겨준 뒤 내부의 함수를 1,2 값을 인자로 넘겨 함수를 호출한다.
alert(cal('minus' (1,2));
함수 안에 객체를 만들고 그 안에 속성 값에 따라 함수를 호출하고 내부의 함수를 호출하기 위해 (1,2)라는 인자를 보내
내부에서 호출한 함수를 리턴해 값을 받을 수 있습니다.
객체뿐만 아니라 배열 안에 함수들을 선언한뒤 호출할 수 있습니다.
var process=[
function(input){ return input + 10 ;},
function(input){ return input * input ;},
function(input){ return input / 2 ;}
];
var input=1;
for(var i=0; i<process.length; i++){
input = process[i](input);
}
alert(input);
배열 안에 함수들을 정의하고 for을 사용하여 총 3개의 함수를 호출하였습니다.
처음 호출되었을 때는 input값은 11이 되고
그다음 두 번째 함수가 호출되면서 11*11 가 되어 121을 리턴합니다.
마지막으로 세 번째 함수가 호출되면서 121 / 2 가 되어 60.5를 리턴한후 경고창에 60.5가 출력이 됩니다.
전에 스코프에서 보았듯이 for안에 있는 input은 전역 변수의 input을 가리키게 되어 전에 결과로 받은 값으로 계속
연산하여 결과가 출력되었습니다.
자바스크립트에서 함수를 일급 객체라고 하는데
변수의 값 , 매개변수의 값 , 리턴 값과 같이 여러 방면으로 값으로 사용되는 객체들을
일급 객체라고 부릅니다.
'Javascript 정리' 카테고리의 다른 글
클로저 사용시 주의사항 (0) | 2020.06.29 |
---|---|
클로저(Closure) (0) | 2020.06.29 |
유효범위의 대상 (0) | 2020.06.26 |
유효범위 (Scope) (0) | 2020.06.26 |
자바스크립트의 정규표현식 (RegExp) (0) | 2020.06.26 |