Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

몽탁이의 개발일기

자바스크립트에서의 함수 본문

Javascript 정리

자바스크립트에서의 함수

몽탁 2020. 6. 29. 15:49

자바스크립트에서 함수는 객체입니다. 

때문에 값으로 사용할 수 있습니다.

 

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