我找到了一个使用Express运行服务器的示例,但我不明白'为什么'它有效。
代码如下:
var server = app.listen(3000, function() {
console.log('Listening on port 3000');
});
这个var赋值的结果是一个在端口3000监听的进程,但是我正在分配一些没有执行的东西。
我错过了什么?
干杯,乔瓦尼
答案 0 :(得分:3)
在Javascript中app.listen()
是一个方法调用,它在listen()
对象上执行app
方法。然后,该方法调用的返回值将分配给您的server
变量。
所以,把它与你的代码放在一起:
var server = app.listen(3000, function() {
console.log('Listening on port 3000');
});
事件的顺序如下:
server
的新变量。listen()
调用app
对象上的app.listen(...)
方法。3000
作为端口号,以及在.listen()
方法完成时调用的回调函数。app.listen()
方法返回的值分配给server
变量。此var赋值的结果是在端口3000处侦听的进程, 但我正在分配一些不执行的东西。
实际上,你正在做两件事。您正在调用app.listen()
方法,然后将返回结果分配给server
变量。
短语self executing
在这里并不适用。 app.listen()
之后的parens使这成为一个函数调用,它将在.listen()
对象上执行app
方法。
答案 1 :(得分:0)
app.listen
是一个接受参数并返回一些对象的方法。像这样的东西
app.listen = function(time, handlerFunc) {
// do some stuff
return someObject;
}