Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript函数(e){},但在执行时不传递任何参数_Javascript - Fatal编程技术网

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

javascript函数(e){},但在执行时不传递任何参数,javascript,Javascript,有时我会看到带有如下参数的函数: $('#my_div').bind("mouseover mouseenter", function (e) { console.log(e); var el = $("#" + e.type); var n = el.text(); el.text(++n); }); 我不知道传递给函数的是什么。如果它类似于(函数(e){…}(参数);,我会理解它,但它不是。有人能遮住一些光线吗?jQuery实际上会调用该函数,因为函数是J

有时我会看到带有如下参数的函数:

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

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

我不知道传递给函数的是什么。如果它类似于
(函数(e){…}(参数);
,我会理解它,但它不是。有人能遮住一些光线吗?

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


此模式称为“回调”。

始终有一个参数被传递,只是您不是直接传递它的人。浏览器是

在本例中,您讨论的是事件处理程序。基本上,当事件被触发时,浏览器会将事件对象传递给事件侦听器的回调(您提供的回调)

如果您想知道事件对象的内部内容,请查看此mozilla文档页面


如果你想知道浏览器是如何处理整个事件对象的传递的,这里有一个规范:看看下面的4)它说“按如下方式处理事件”

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

这是一个jquery事件对象,因此传递它的不是浏览器。同样的想法……没错,从技术上讲,jQuery涵盖了整个过程。但最终,该事件将不得不在某个时候由浏览器传递。另外,当您开始区分Javascript做了什么以及最终结果相同时封装的jQuery做了什么时,这会让人感到困惑。