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(); 例子一可以執行,例子二就不能。
其他參考資料 |