在下面的代码中,JavaScript函数表达式何时被调用/执行/调用?

在下面的代码中,JavaScript函数表达式何时被调用/执行/调用?,javascript,node.js,express,Javascript,Node.js,Express,我是JavaScript的初学者。在这段代码中,我们从未调用过server();但它正在执行。而且它不是立即调用的函数表达式。app.listen()在什么时候真正执行 从以下位置获取的代码:app.listen在到达该行时执行 var express = require('express') var app = express(); app.use(express.static('static')); var server = app.listen(3000, function() {

我是JavaScript的初学者。在这段代码中,我们从未调用过server();但它正在执行。而且它不是立即调用的函数表达式。app.listen()在什么时候真正执行


从以下位置获取的代码:

app.listen在到达该行时执行

var express = require('express')

var app = express();

app.use(express.static('static'));

var server = app.listen(3000, function() {
    var port = server.address().port;
    console.log("Started server at port", port);
});
现在,服务器侦听端口3000上的传入连接


listen函数的第二个参数是回调,一旦有人连接到端口3000(这是函数的第一个参数),就会调用回调。

服务器不是函数。这是一个变量。 函数
app.listen(…)
就在第7行执行。它的结果被分配给变量
server

app.listen()
函数有一个回调方法(第二个参数)。它是在应用程序开始侦听时执行的。可以这么说。 当此回调被称为server.address()时,端口将返回服务器的端口。

来自:

app.listen()方法返回一个http.Server对象,并且(对于http)是用于以下操作的方便方法:

var server = app.listen(3000, function() { ...

服务器似乎在任何地方都没有被调用。另外,我认为服务器不是一个函数,而是一个对象(从app.listen函数返回)

app.listen = function() {
  var server = http.createServer(this);
  return server.listen.apply(server, arguments);
};