3
$('#foo').click(function(){  });

function(){ }匿名函数,还是自调用函数?两者之间有什么区别?

4

4 回答 4

9

没有名称/引用的函数称为匿名函数。里面的函数$('#foo').click(function(){ });是一个匿名函数。

自调用函数是在定义后立即调用的函数。

(function () { })();-> 是一个自调用函数。

于 2012-08-30T20:14:49.463 回答
5

那是一个匿名函数。

顾名思义,“自调用函数”是一个调用自身的函数。

像这样:

(function(){
    console.log('hi');
}());
于 2012-08-30T20:14:51.647 回答
1

是的,它是一个匿名函数。我不知道你所说的“自调用函数”是什么意思,也许是这样的:

(function(){alert("hello")}())

那是您定义然后立即调用的匿名函数——函数后面的括号是导致函数执行的原因。

在第一种情况下,您正在创建一个希望 javascript 在未来某个时间(即单击 html 元素时)执行的函数。js 将函数存储在某处,然后当点击 html 时,js 调用该函数。

所以区别在于一个函数现在执行,一个函数稍后执行。

于 2012-08-30T20:22:17.073 回答
0

自调用函数等价于:

function self_invoke(params...) {...};
function(args...);

匿名函数的使用等价于:

function anonymous(params...) {...};
$('#foo').click(anonymous);

在这两种情况下,不同之处在于命名空间没有被小函数的名称污染。

于 2012-08-30T20:26:01.800 回答