将参数传递给事件回调

时间:2015-04-17 19:23:13

标签: javascript jquery

我想我错过了一些javascript事件的基础知识。

请问smb请解释为什么这两个电话不会返回相同的结果?

// 1
$(window).on('load', function(){
    spiderLoad();
});

// 2
$(window).on('load', spiderLoad); 

修改

function spiderload() {} 

函数没有参数,但我使用了一些$jQuery来获取datahref等的值。在1中调用spiderLoad时,我怀疑我正在丢失load事件对象引用。

由于

2 个答案:

答案 0 :(得分:4)

他们有不同的结果,因为他们正在做着根本不同的事情。

$(window).on('load', function(){
    spiderLoad();
});

这将创建一个新的匿名函数,并将其添加为事件处理程序。匿名函数调用spiderLoad()而没有参数。

$(window).on('load', spiderLoad); 

这会将spiderLoad()直接添加为 作为事件处理程序,这意味着它将收到jQuery event object作为其第一个参数。

编辑:如果spiderLoad()没有参数,那么应该没有区别,除了thisspiderLoad()的价值

答案 1 :(得分:2)

如果spiderLoad返回一个值,它们将采取不同的行动。

function spiderLoad(){
    return false
}

如果它是这样写的,它们将是相同的(假设函数不关心传入的参数)。

$(window).on('load', function(){
    return spiderLoad();
});