所以今天看起来像这样:
$$('input').each(function() {
// do something
});
那和这有什么区别:
$$('input').each( // do something );
第一个示例中的私有函数在 for 循环范围内,因此在其他任何地方都不可引用,那么拥有它有什么好处呢?
所以今天看起来像这样:
$$('input').each(function() {
// do something
});
那和这有什么区别:
$$('input').each( // do something );
第一个示例中的私有函数在 for 循环范围内,因此在其他任何地方都不可引用,那么拥有它有什么好处呢?
这不是私有函数,它只是一个匿名函数(没有名称的函数)。
你可以这样做:
$('input').each(function() {
// do something
});
或者你可以这样做:
function foo() {
// do something
}
$('input').each(foo);
无论如何,该.each
方法需要一个函数作为回调的参数。
匿名函数知道它当前的作用域和变量。
function a() {
var foo = 'test';
$('something').each(function() {
alert(foo);
})
}
该函数会提醒“测试”,因为foo
它是在其范围内定义的。
function a() {
var foo = 'test';
$('something').each(b)
}
function b() {
alert(foo);
}
此函数将导致一个 JavaScript 错误,指出该变量foo
未定义。
如果您需要定义一个只在确切范围内有意义的函数,并且不想抛出大量变量或重新计算很多东西,那么定义一个匿名函数会更舒服。
第一个函数不是私有的。它可以引用包含范围内的所有变量以形成一个闭包,因为 JavaScript 具有词法范围。
第二个函数几乎是一样的,除了你唯一能做的就是为它提供一个函数名,否则你会得到一个语法错误。
简短的回答:你把函数语句放在那里做不止一件事,或者做一件事并提供参数。