Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 函数与事件侦听器_Javascript_Function_Event Handling_Dom Events - Fatal编程技术网

Javascript 函数与事件侦听器

Javascript 函数与事件侦听器,javascript,function,event-handling,dom-events,Javascript,Function,Event Handling,Dom Events,我对编程知之甚少,我开始研究node.js。 节点的一个特点是“事件驱动架构” 虽然我能理解它的想法和优点,但我并没有真正理解它与功能之间的区别。 为了使它尽可能简单,我试图思考标准函数(响应调用的可重用代码段)和事件侦听(响应事件的可重用代码段)之间的区别 有没有人可以解释一下这一点?nodejs Javascript中的函数与所有其他语言一样工作。它们是一段可重用代码,您可以随时调用。您可以创建一个完整的程序,该程序只需调用函数即可完成其任务,然后就存在了 但是,大多数用NodeJ编写的程序

我对编程知之甚少,我开始研究node.js。 节点的一个特点是“事件驱动架构”

虽然我能理解它的想法和优点,但我并没有真正理解它与功能之间的区别。 为了使它尽可能简单,我试图思考标准函数(响应调用的可重用代码段)和事件侦听(响应事件的可重用代码段)之间的区别


有没有人可以解释一下这一点?

nodejs Javascript中的函数与所有其他语言一样工作。它们是一段可重用代码,您可以随时调用。您可以创建一个完整的程序,该程序只需调用函数即可完成其任务,然后就存在了

但是,大多数用NodeJ编写的程序都会响应外部活动(比如web请求或通过套接字发送的数据)。为此,必须使用某种类型的事件侦听器。事件监听器实际上只是您的代码,它在特定事件中注册一个兴趣,并分配一个在该事件发生时将被调用的函数。函数也用于事件(它们只是常规函数,但称为“回调”),但当事件发生时,某些子系统会自动调用它们,而不是直接从自己的代码调用它们

让我们看看基于Express模块的nodejs Web服务器:

var express = require('express');
var app = express();

app.get('/', function(req, res){
  // this function is called when the webserver gets a request for "/"
  res.send('hello world');
});

app.listen(3000);
在这段代码中,代码的
app.get()
行表示,当web服务器获取路径“/”的web请求时,调用
app.get()调用中声明的函数。这个特定的函数是一个内联匿名函数,但它仍然是一个函数,不必这样声明。它也可以是一个常规命名函数

因此,上面的代码也可以使用如下命名函数:

var express = require('express');
var app = express();

function rootRouteHandler(req, res) {
  // this function is called when the webserver gets a request for "/"
  res.send('hello world');
}

app.get('/', rootRouteHandler);

app.listen(3000);

这两者的执行情况没有什么不同。两者都注册了一个函数,该函数将在将来某个特定事件发生时调用。在这种特殊情况下,通常首选的设计模式是匿名函数,因为代码更为自包含和自文档化,并且通常没有理由为函数使用名称(通常不会在其他任何地方调用它)。

事件侦听器函数只是函数。没有内在的区别;函数就是函数。您可以将任何函数用作事件侦听器,包括匿名函数和其他函数。