본문 바로가기

FLASH/AS3.0기초

함수

함수(function)는 무엇일까요?

초등학교 때부터 수학시간에 나왔던 것이지요.

 

어떤 값이 들어가면 적당한 가공을 해서 가공된 값이 나오도록 하는 기계와도 같습니다.

 

[함수선언방법]

 

1. 이름있는 함수를 선언해 봅시다.

function 함수이름():return type{
  //실행문

}

 

예제

function totalSum():Number{

  var a:int = 10;

  var b:int = 20;

  var c:int=a+b;

  trace(c);

}

 

 

2. 이름없는 함수를 선언해 봅시다.

var 변수:Function = function():return type{
  //실행문

}

 

예제

var add2:Function = function():void{

  var a:int = 10;

  var b:int = 20;

  var c:int=a+b;

}

 

[함수호출]

정의된 함수를 실행하려면 호출을 해야 하는데 이렇게 하면 됩니다.

add();

 

[매개변수(parameter)를 이용한 함수확장]

함수에 매개변수를 넣어서 정의를 할 수 있습니다.

다음 예를 봅시다.

function add(para1:Number, para2:Number):void{

  var c:Number = para1 + para2;

  trace(c);

}

add(10, 20);  //30출력

add(15, 30);  //45출력

 

매개변수에 기본값을 설정하는 것도 가능합니다.

다음 예를 봅시다.

function add(para1:Number=1, para2:Number=2):void{

  var c:Number = para1 + para2:

  trace(c);

}

add(5, 15);  //20출력, 매개변수로 5,15 모두 전달되므로 함수의 매개변수의 기본값은 무시함

add(15, 30);  //7출력, 첫번째 매개변수 값으로만 5가 전달되고 두번째 함수에서 선언된 기본값을 두번째 매개변수의 값으로 사용 

 

[...(rest) 매개변수]

이것은 AS3.0에서 추가된 문법이다. argument와 비슷합니다.

다음 예를 봅시다.

function totalSum(...args):void{
 var sum:Number = 0;
 for(var i:int=0; i<args.length; i++){
  if(!isNaN(args[i])){
   sum+=args[i];
  }
 }
 trace(sum);
}
totalSum(34,23,"Hello",7);  //64출력

 

args 매개변수와 다른 매개변수를 같이 사용하는 예제

 

function totalSum(msg, ...args):void{
 var sum:Number = 0;
 for(var i:int=0; i<args.length; i++){
  if(! isNaN(args[i])){
   sum += args[i]
  }
 }
 trace(msg+sum);
}
totalSum("총합은 =", 34, 23, "Hello", 7); //64

 

 

 

 

 

Pass by Value 와 Pass by Reference 가 무엇인지 알아봅시다.

 

Pass by Value는 값에의 한 전달입니다.

값 자체가 함수 내부에서 선언된 변수로 전달된 것입니다.

다음 예를 확인해 봅시다.

 

var xValue:int = 10;
var yValue:int = 15;

 

trace(xValue, yValue);  //10,15
passPrimatives(xValue, yValue);  //11,16
passPrimatives(xValue, yValue);  //11,16

 

function passPrimatives(xParam:int, yParam:int):void{
   xParam++;
   yParam++;
   trace(xParam, yParam);
}

 

 

 

Pass by Reference는 참조에 의한 전달입니다.

메모리의 주소를 전달하는 것으로서 매개 변수를 수정하면 원래 값이 수정됩니다.

다음 예를 확인해 봅시다.

 

var objParam:Object = {x:10, y:15};

 

trace(objParam.x, objParam.y);  //10,15출력
passByRef(objParam);  //11,16출력
trace(objParam.x, objParam.y);  //11, 16출력

 

function passByRef(objParam:Object):void{
  objParam.x++;
  objParam.y++;
  trace(objParam.x, objParam.y);
}

 

[함수 안에서의 var의 의미]

이것은 함수내부에서만 사용되는 지역변수입니다.

함수의 종료와 동시에 메모리에서 사라집니다.

 

var c:Number = 1234;

 

function addNum(para1:Number, para2:Number):Number{
 var c:Number = para1 + para2;
 return c;
}

 

trace(c);  //1234출력
trace(addNum(10, 20)); //30출력

'FLASH > AS3.0기초' 카테고리의 다른 글

타이머  (0) 2012.10.25
AS2.0 과 AS3.0의 대표적인 차이점  (0) 2012.10.25
Object 클래스  (0) 2012.10.25
Array  (0) 2012.10.25
String  (0) 2012.10.25
반복문  (0) 2012.10.25
선언문, 조건문  (0) 2012.10.25
변수  (0) 2012.10.25
절차적인 방법와 객체지향 방법의 차이점  (0) 2012.10.24
Action Script 3.0의 새로운 기능  (0) 2012.10.24