Javascript函数参数的简单解释?

Javascript函数参数的简单解释?,javascript,Javascript,前言 这无助于: 这无助于: 这无助于: 请不要要求/告诉我搜索论坛,我做了。我还搜索了谷歌。我查看了我能找到的每一份文档,但(大约三年)一直无法理解这一点,(我确信)相当简单的概念 问题 我了解函数参数的基本用法,例如: function myFunction(x) { var result = x * 2; console.log(result) } myFunction(4); 我一直明白这个用法。我不理解的用法是: $("a").click(function(event

前言
这无助于: 这无助于:

这无助于:

请不要要求/告诉我搜索论坛,我做了。我还搜索了谷歌。我查看了我能找到的每一份文档,但(大约三年)一直无法理解这一点,(我确信)相当简单的概念

问题
我了解函数参数的基本用法,例如:

function myFunction(x) {
  var result = x * 2;
    console.log(result)
}
myFunction(4);
我一直明白这个用法。我不理解的用法是:

$("a").click(function(event){
    event.preventDefault();
});
变量似乎不知道从哪里来。我知道,当您将变量用作参数时,它本质上是声明/定义的,但该函数中到底发生了什么?我知道最终的结果是什么,但如何通过使用“事件”来实现什么是事件???它的价值是什么

我在网上读到的所有东西都只解释了参数的首次使用,这很简单。任何关于第二种用法的帮助,我知道它们实际上是以同样的方式使用的,将不胜感激

$("a").click(function(event){
    event.preventDefault();
});
传递给函数
click
的参数本身就是一个函数。看起来是这样的:

function(event){
        event.preventDefault();
}
Foo(function(bar) {
    console.log(bar);
});
因此,
event
是调用该函数的任何函数都将传递给该函数的参数。当目标元素上发生单击事件时,调用该函数的是jQuery

如果您查看有关的文档,您将看到:

。单击(处理程序)

处理者

类型:函数(事件对象)A 函数在每次触发事件时执行

因此,您要传递的函数是
处理程序
。Handler是一个函数,它接受类型为的
eventObject
(您简单地称之为
event
,这很好-这里不重要)参数

简单地说,你不需要担心函数是如何被调用的。库将在适当的时间调用它,并将适当的对象作为
event
传递给该函数。您需要担心的是,在处理程序中应该做什么,这可能涉及实际使用
事件

传递给
click
的函数是匿名的,这可能会让您感到困惑。它没有名字。如果有帮助,您可以这样做:

 function MyClickHander(event) {
     // do something here
 }

 $("a").click(MyClickHandler);
基本上是一样的。但是人们通常更喜欢使用匿名函数,而不是为他们可能需要担心的各种事件编写几十个潜在的命名处理函数

编辑:

还可以考虑如何编写将函数作为参数的函数(例如,接受回调的函数):

您可以这样使用:

function(event){
        event.preventDefault();
}
Foo(function(bar) {
    console.log(bar);
});
所以这里的
bar
来自内部
Foo
——就像
event
来自内部
click
。您不必担心
单击事件
的确切来源(尽管如果您非常愿意,您可以深入研究源代码),jQuery文档告诉您
单击
将如何处理
处理程序
,因此您不必这样做

传递给函数
click
的参数本身就是一个函数。看起来是这样的:

function(event){
        event.preventDefault();
}
Foo(function(bar) {
    console.log(bar);
});
因此,
event
是调用该函数的任何函数都将传递给该函数的参数。当目标元素上发生单击事件时,调用该函数的是jQuery

如果您查看有关的文档,您将看到:

。单击(处理程序)

处理者

类型:函数(事件对象)A 函数在每次触发事件时执行

因此,您要传递的函数是
处理程序
。Handler是一个函数,它接受类型为的
eventObject
(您简单地称之为
event
,这很好-这里不重要)参数

简单地说,你不需要担心函数是如何被调用的。库将在适当的时间调用它,并将适当的对象作为
event
传递给该函数。您需要担心的是,在处理程序中应该做什么,这可能涉及实际使用
事件

传递给
click
的函数是匿名的,这可能会让您感到困惑。它没有名字。如果有帮助,您可以这样做:

 function MyClickHander(event) {
     // do something here
 }

 $("a").click(MyClickHandler);
基本上是一样的。但是人们通常更喜欢使用匿名函数,而不是为他们可能需要担心的各种事件编写几十个潜在的命名处理函数

编辑:

还可以考虑如何编写将函数作为参数的函数(例如,接受回调的函数):

您可以这样使用:

function(event){
        event.preventDefault();
}
Foo(function(bar) {
    console.log(bar);
});

所以这里的
bar
来自内部
Foo
——就像
event
来自内部
click
。您不必担心在
中单击
事件
的确切来源(尽管如果您确实愿意,您可以深入研究源代码),jQuery文档告诉您,
单击
将如何处理
处理程序
,这样您就不必这样做了。

您所显示的“第二次使用”是一种非常常见的事件函数形式。您要求我们不要向您提供文档,但坦率地说,您阅读了错误的文档

事件“变量”实际上是一个变量。我将在下面分析示例


以下是直接从文档中删除的内容:

// Access the `dataTransfer` property from the `drop` event which
// holds the files dropped into the browser window.
var files = event.originalEvent.dataTransfer.files;
要解决您在其上发布的特定用法,即
preventDefault()
,请参见另一个示例:

说明:如果调用此方法,将不会触发事件的默认操作…例如,单击的锚定将不会触发