Luar's Flash Playground:aaa=function(){}與function aaa(){}的分別
aaa=function(){}與function aaa(){}的分別 (05-05-2004)
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();
例子一可以執行,例子二就不能。

其他參考資料
本文章由發表。
意見
"; print "沒有意見。
 "; } ?>
  • 很好的總結 :)

    BillyLai於05-05-2004發表

  • 謝謝~

    由Iden於05-05-2004發表

  • 多謝你的指敎^^

    由wanccho於05-05-2004發表

  • 恩,下去研究一下
    謝謝

    光光當於11-05-2004發表

  • 太有用了!thanks!

    lamfan於11-05-2004發表

  • 多謝你的講解,正好解決了今天遇到的問題。
    只是很好奇為何有此分別…?

    maso於08-06-2004發表

  • 一直以來都以為沒什麼分別的...
    原來還是有不同之處...
    嗯..釐清觀念...^^

    由duer於14-06-2004發表

  • 由heskeyo於17-06-2004發表

  • 請問可否講講以下語句的用處...

    1. Object.registerClass(symbolID, theClass)

    2. myObject.__proto__

    謝謝...

    由G.Chiu於20-06-2004發表

  • myObject.prototype.mymethod=function{...}
    定義symbol為component

    由wibrst於23-06-2004發表

  • 很好,我狗尾續貂一下。
    分別四
    aaa=function(){}不可帶參數
    function aaa(){}則可帶參數(地球人都知道)
    如aaa=function(nam){trace(nam)}
    不能正確執行

    由jackie_2009於16-08-2004發表

  • aaa=function(){}可帶參數

    由luar於16-08-2004發表

  • 你好請教一個問題
    as.loadMovie("a.jpg");
    as.onData = function() {
    trace("asdfasdf");};
    沒有反映
    onClipEvent ( load) {loadMovie("a.jpg",this);
    }
    onClipEvent (data) {trace("asdfasdfas")
    }
    有反映,
    請問為什麼
    謝謝

    由g0c0於29-08-2004發表

同組文章