본문 바로가기
Programming/JavaScript

[ JavaScript ] 자바스크립트 함수 지향 | 메소드와 함수 차이 | 함수 리턴값 | 함수 배열

by 코뮤(commu) 2021. 2. 3.
728x90
반응형

이미지 출처 :   https://commons.wikimedia.org/wiki/File:JavaScript-logo.png

 

 

 

 

 

해당 포스팅은 생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅임을 미리 알립니다.

 

 

 


 

 

 

값으로서의 함수 - 함수와 메소드의 차이

 

 

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) 라고 할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형