豪鬼斯特的開發筆記

星期一, 8月 22, 2005

【FLASH】aaa=function(){}與function aaa(){}的分別

aaa=function(){}與function aaa(){}兩者都是用來定義函數的語法,一般使用上,兩者沒有分別,但是實踐上兩者有以下分別:

分別一
前者, 如果呼叫函數在定義函數前執行, 是無效的:
aaa();
aaa = function () {
 trace("me");
};


但後者是有效的:
aaa();
function aaa() {
 trace("me");
}


因為後者在整個Action Panel中程序是優先執行,前者則跟隨程序所在順序執行。

分別二
前者叫Forward Referening,可以直接將函數定義在指定Object/Movie Clip:

mc.aaa = function() {
 trace("me");
};

後者將函數定義在目前Timeline(Main Movie或某Movie Clip)中, 無法在Object裡定義。

分別三
前者語法函數可以動態產生,後者語法不能夠,試看看以下兩個例子:
例子一
b = 1;
if (b == 1) {
 aaa = function () {
  trace("me");
 };
}
aaa();

例子二
b = 1;
if (b == 1) {
 function aaa() {
  trace("me");
 }
}
aaa();


例子一可以執行,例子二就不能。

0 Comments:

張貼留言

<< Home