해당 포스팅은 생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅임을 미리 알립니다.
값으로서의 함수 - 함수와 메소드의 차이
JavaScript에서는 함수도 객체입니다. 다시 말해서 일종의 값인 셈이죠.
거의 모든 언어가 함수를 가지고 있는데, JavaScript의 함수가 다른 언어의 함수와 다른 점은
함수가 값이 될 수 있다는 점입니다.
function a(){}
위의 코드는 a 라는 함수를 선언한 것입니다. 이는 곧 변수 a 에 함수가 담겨있다라고 볼 수 있습니다.
또한 함수는 객체의 값으로 포함될 수 있습니다.
이렇게 객체의 속성 값으로 담겨진 함수를 메소드(method)라고 부릅니다.
a = {
b:function(){
}
};
정리하자면, 메소드는 객체의 속성값으로 담겨진 함수를 부르는 명칭입니다.
함수는 값이기 때문에 다른 함수의 인자로 전달 될수도 있습니다.
예제로 살펴보겠습니다.
function cal(func, num){
return func(num)
}
function increase(num){
return num+1
}
function decrease(num){
return num-1
}
console.log(cal(increase, 1));
console.log(cal(decrease, 1));
10행을 실행하면 함수 increase와 값 1이 함수 cal의 인자로 전달됩니다.
함수 cal은 첫번째 인자로 전달된 increase를 실행하는데,
이 때 두번째 인자의 값이 1을 인자로 전달합니다.
함수 increase은 계산된 결과를 리턴하고 cal은 다시 그 값을 리턴합니다.
함수는 함수의 리턴 값으로도 사용할 수 있습니다.
function cal(mode){
var funcs = {
'plus' : function(left, right){return left + right},
'minus' : function(left, right){return left - right}
}
return funcs[mode];
}
console.log(cal('plus')(2,1));
console.log(cal('minus')(2,1));
배열의 값으로도 사용 가능합니다.
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);
}
console.log(input);
이렇게 함수는
- 변수
- 매개변수
- 리턴값
등으로 아주 다양하게 사용될 수 있습니다.
다양한 용도로 사용할 수 있는 데이터를 first-class citizen(object) 라고 부르는데,
따라서 함수는 first-class citizen(object) 라고 할 수 있습니다.
'Archive > Develop' 카테고리의 다른 글
[ JavaScript ] 자바스크립트 기본 문법 | 내장 함수 & 클로저 개념| Private Variable (0) | 2021.02.03 |
---|---|
[ JavaScript ] 자바스크립트 콜백 & 비동기처리 (0) | 2021.02.03 |
[ JavaScript ] 자바스크립트 전역변수와 지역변수 | 변수의 유효범위 (0) | 2021.02.03 |
[ JavaScript ] 자바스크립트 정규표현식 | 정규표현식 객체 생성 | 정규표현식 대소문자 옵션 | match 함수 (0) | 2021.02.03 |
[ JavaScript ] 자바스크립트 기본 문법 | API란 무엇인가 | 자바스크립트 API | node.js API (0) | 2021.02.03 |