匿名函数和命名函数的区别

匿名函数:functionName=function(){}命名函数:function functionName(){}两者都是用來定义函数的语法,一般使用上,两者沒有分別,但是实践上两者有以下区別:

区别一:

前者, 如果呼叫函数在定义函数前执行, 是无效的:

functionName();
functionName = function () {
trace(“me”);
};
但后者是有效的:
functionName();
function functionName() {
trace(“me”);
}

因为后者在整个Action Panel中程序是优先执行,前者则跟随程序所在順序执行。

区別二:

前者叫Forward Referening,可以直接将函数定义在指定Object/Movie Clip:

mc.functionName = function() {
trace(“me”);
};
后者将函数定义在目前Timeline(Main Movie或某Movie Clip)中, 无法在Object里定义。

区別三:

前者语法函数可以动态产生,后者语法不能够,试看看以下两个例子:

例子一

b = 1;
if (b == 1) {
functionName = function () {
trace(“me”);
};
}
functionName();
例子二
b = 1;
if (b == 1) {
function functionName() {
trace(“me”);
}
}
functionName();
例子一可以执行,例子二就不能。

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s