함수(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 |