javascript - Javascript函数参数的简单解释?

标签 javascript

前言
这没有帮助: enter image description here 这没有帮助: 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 是一个函数,它接受类型为 EventeventObject(您简称为 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/

相关文章:

javascript - zepto.js 页面动画

javascript - 创建时访问 jQueryUI 对话框按钮

javascript - 如何在 Javascript 中设置表格单元格的背景图像?

Javascript 固定页脚覆盖焦点

javascript - 查找并替换选择字段中的选项

javascript - 似乎无法处理 JavaScript

javascript - 如何解决移动 <LI> 流 jQTouch 移动 Web 应用程序上的跳跃问题 (iPhone JavaScript)

javascript - 使用javascript加入两个数据集

javascript - ajax,变量未定义?

javascript - PhoneGap 相关协议(protocol)问题