javascript函数(e){},但在执行时不传递任何参数

时间:2013-10-13 01:27:08

标签: javascript

有时我会看到带有这样参数的函数:

$('#my_div').bind("mouseover mouseenter", function (e) {
    console.log(e);
    var el = $("#" + e.type);
    var n = el.text();

    el.text(++n);
});

我没有得到传递给函数的内容。如果它像(function(e){ .... }(parameter);那样我会理解,但事实并非如此。有人可以遮挡一些光线

3 个答案:

答案 0 :(得分:3)

jQuery实际上会调用该函数,因为函数是JavaScript中的第一类公民对象,因此它可以作为参数传递。 e用于jQuery将提供的事件参数。

此模式称为“回调”。

答案 1 :(得分:1)

总是传递参数,只是你不是直接传递的参数。浏览器是。

在这种情况下,您正在谈论事件处理程序。基本上发生的事情是,当触发事件时,浏览器会将事件对象传递给事件侦听器(您提供的回调)的回调。

如果您想知道事件对象中的内容,请查看此mozilla文档页面https://developer.mozilla.org/en-US/docs/Web/API/Event

如果您想知道浏览器如何处理事件对象的整个传递,请遵循以下规范:http://www.w3.org/html/wg/drafts/html/master/webappapis.html#the-event-handler-processing-algorithm在4)下查看"按如下方式处理事件E&#34 ;

答案 2 :(得分:1)

实际上还没有调用该函数。这告诉浏览器在“鼠标悬停”或“鼠标中心”事件发生时为您调用该功能。在这种情况下,当浏览器执行此操作时,它将传递一个事件对象,该事件对象将绑定到函数侧面的局部变量e