自动执行分配给变量的函数

时间:2016-10-13 01:28:46

标签: javascript node.js

我找到了一个使用Express运行服务器的示例,但我不明白'为什么'它有效。

代码如下:

var server = app.listen(3000, function() {
  console.log('Listening on port 3000');
});

这个var赋值的结果是一个在端口3000监听的进程,但是我正在分配一些没有执行的东西。

我错过了什么?

干杯,乔瓦尼

2 个答案:

答案 0 :(得分:3)

在Javascript中app.listen()是一个方法调用,它在listen()对象上执行app方法。然后,该方法调用的返回值将分配给您的server变量。

所以,把它与你的代码放在一起:

var server = app.listen(3000, function() {
  console.log('Listening on port 3000');
});

事件的顺序如下:

  1. 在当前范围内声明名为server的新变量。
  2. 使用listen()调用app对象上的app.listen(...)方法。
  3. 将该方法传递两个参数3000作为端口号,以及在.listen()方法完成时调用的回调函数。
  4. 然后将app.listen()方法返回的值分配给server变量。
  5.   

    此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;
}