別のブログで公開してたものです。
一部をこっちのブログに移行しようと手動で(^^;)移行したものです。

クラスに行こうかと思ってたが、引数の省略と関数のオーバーロードについて書く。

引数の省略は変数名の後に?をつけると、省略可能になる。省略された場合、変数の値はundefinedになる。

function hoge(a:string, b?:number) :void {
	alert("hoge:" + a +"," + b);
}

hoge("aaa");

この場合、"hoge:aaa,undefined"と表示される。

省略された時のデフォルト値を指定する方法がある。

function hoge(a:string, b:number = 10) :void {
	alert("hoge:" + a +"," + b);
}

hoge("aaa");

この場合、"hoge:aaa,10"と表示される。

可変長引数は、変数の前に…を付けて配列する。

function hoge(a:string, ...b:any[]):void {
	alert("hoge:" + a +"," + b);
}

hoge("aaa",10,2);

関数のオーバーロードは、引数の型が違う関数の宣言を書いておき、型の違う引数のところをanyやobjectにした関数本体を宣言する。その関数内で型のを調べて処理を分岐することでオーバーロードっぽいことを実現する。

function hoge(a:number):void;
function hoge(a:string):void;

function hoge(a:any):void {
	if(typeof a == "number") {
		alert("number");
	} else {
		alert("string");
	}
}
hoge(18);

この場合、"number"と表示される。