我刚开始学习jQuery。我更像是一个html + css网页设计师,所以你可能会告诉函数需要一点点适应,特别是匿名的。
那么在
之间有什么区别$('p.expander').toggle(
function() {
$(this).prev().addClass('open');
},
function() {
$(this).prev().removeClass('open');
}
);
并说...
function toggle1 () { $(this).prev().addClass('open');}
function toggle2 () { $(this).prev().removeClass('open');}
$('p.expander').toggle(toggle1, toggle2);
如果你使用过一次,你会使用匿名函数吗?如果你不止一次使用函数,你应该调用它吗?
正如标题所述,是否比另一个更有效?因为看起来99%的文章都使用匿名文章。我发现有时难以阅读代码,因为我忘记了分号或括号的含义。
答案 0 :(得分:1)
这个名字,就是区别。两者在运行时都是等效的。只是如果你定义一个匿名函数,你就不能在其他地方重用它。在您不打算重用此代码的情况下,它非常有用。如果要重用它,请使用命名函数。
这是一个我们可以在多个地方重用命名函数的例子:
$('p.expander').toggle(toggle1, toggle2);
$.post('/foo/bar', toggle1);
$('a.foo').click(toggle2);
答案 1 :(得分:1)
匿名和匿名函数之间存在无性能差异 如果你只调用一次函数,那么将函数称为名称是不行的。
如果要两次或更多次调用相同的功能,则必须为该功能命名。
答案 2 :(得分:1)
在这种特定情况下,没有区别。但请考虑:
$(document).ready( function(){
var a, b, c,
d, e, f,
g, h, i;
$('p.expander').toggle(
function() {
$(this).prev().addClass('open');
},
function() {
$(this).prev().removeClass('open');
}
);
});
VS
function toggle1 { $(this).prev().addClass('open');}
function toggle2 { $(this).prev().removeClass('open');}
$(document).ready( function(){
var a, b, c,
d, e, f,
g, h, i;
$('p.expander').toggle( toggle1, toggle2 );
});
在这种情况下,匿名函数包含更大的环境(使用更多内存),因为除非浏览器对其进行优化,否则它们知道a, b, c, d, e, f, g, e, h, i
。