前言
这没有帮助:
这没有帮助:
https://www.w3schools.com/js/js_functions.asp
这没有帮助: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions
请不要要求/告诉我搜索论坛,我搜索过。我还搜索了谷歌。我查看了我能找到的每一份文档,并且(大约三年)一直无法理解这个(我敢肯定)相当简单的概念。
问题
我了解函数参数的基本用法,例如:
function myFunction(x) {
var result = x * 2;
console.log(result)
}
myFunction(4);
我一直都明白那个用法。我不理解的用法是这样的:
$("a").click(function(event){
event.preventDefault();
});
变量似乎无处。我知道当您将变量用作参数时,它实际上是声明/定义的,但是该函数到底发生了什么?我知道最终的结果是什么,但它是如何通过“事件”来实现的。 什么是事件??它的值(value)是什么??
我在网上读到的所有内容都只解释了参数的第一次用法,这很简单。对于第二种用法的任何帮助,我知道它们实际上是以相同的方式使用的,将不胜感激!
最佳答案
$("a").click(function(event){
event.preventDefault();
});
您传递给函数 click
的参数本身就是一个函数。它看起来像这样:
function(event){
event.preventDefault();
}
因此,event
是将由调用该函数的任何对象传递给该函数 的参数。当目标元素上发生点击事件时,调用该函数的是 jQuery。
如果您查看 click 的文档你会看到这个:
.click( handler )
handler
Type: Function( Event eventObject ) A function to execute each time the event is triggered.
所以你传递的函数是handler
。 Handler 是一个函数,它接受类型为 Event 的 eventObject
(您简称为 event
,这很好 - 这里无关紧要)参数
简单地说,您无需担心该函数的调用方式。该库将在适当的时间调用它,并将适当的对象作为 event
传递给该函数。您需要担心的是在该处理程序中执行的操作,这可能涉及也可能不涉及实际使用 event
。
传递给 click
的函数是匿名的,这可能会让您感到困惑。它没有名字。如果有帮助,您可以这样做:
function MyClickHander(event) {
// do something here
}
$("a").click(MyClickHandler);
本质上是一样的。但是人们通常更喜欢使用匿名函数,而不是为他们可能需要担心的所有各种事件编写潜在的数十个命名处理程序函数。
编辑:
考虑一下如何编写将函数作为参数的函数(例如,接受回调的函数)可能会有所帮助:
function Foo(callback) {
bar = someValue;
callback(bar);
}
你可以这样使用:
Foo(function(bar) {
console.log(bar);
});
所以这里 bar
来自 inside Foo
- 就像 event
来自 inside 点击
。你不必担心 exactly click
event
是从哪里来的(尽管如果你确实如此,你可以深入挖掘源代码倾斜),jQuery 文档会告诉您 click
将如何处理您的 handler
,因此您不必这样做。
关于javascript - Javascript函数参数的简单解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44144278/