我想我错过了一些javascript事件的基础知识。
请问smb请解释为什么这两个电话不会返回相同的结果?
// 1
$(window).on('load', function(){
spiderLoad();
});
和
// 2
$(window).on('load', spiderLoad);
修改
function spiderload() {}
函数没有参数,但我使用了一些$jQuery
来获取data
,href
等的值。在1
中调用spiderLoad时,我怀疑我正在丢失load事件对象引用。
由于
答案 0 :(得分:4)
他们有不同的结果,因为他们正在做着根本不同的事情。
$(window).on('load', function(){
spiderLoad();
});
这将创建一个新的匿名函数,并将其添加为事件处理程序。匿名函数调用spiderLoad()
而没有参数。
$(window).on('load', spiderLoad);
这会将spiderLoad()
直接添加为 作为事件处理程序,这意味着它将收到jQuery event object作为其第一个参数。
编辑:如果spiderLoad()
没有参数,那么应该没有区别,除了this
内spiderLoad()
的价值
答案 1 :(得分:2)
如果spiderLoad返回一个值,它们将采取不同的行动。
function spiderLoad(){
return false
}
如果它是这样写的,它们将是相同的(假设函数不关心传入的参数)。
$(window).on('load', function(){
return spiderLoad();
});