如何确定nodejs / expressjs函数中的avaialble方法

时间:2017-10-03 18:23:37

标签: javascript node.js express

如果我有像

这样的功能
request.get(options, function(req, res, body) {
    console.log(req, res, body)
});

本地函数变量名是否为任意名(req,res,body)。他们可以像什么一样?如果是这样的话,请求'请求'知道如何解释每个函数变量?它是由放置顺序..如在第一个req /什么总是一个请求?我怎么知道是否应该有超过3个局部函数变量以及它们将做什么?

2 个答案:

答案 0 :(得分:1)

  

本地函数变量名是否为任意名(req,res,body)。就像他们可以做任何事情一样吗?

是的,你喜欢什么。 (也就是说:使用一致的名称可以让人们轻松理解您的代码。使用Express文档中的标准名称可以更加轻松。)

  

如果是这种情况,'请求'如何知道如何解释每个函数变量?

没有。它调用你用参数调用它的函数,如:

// Hypothetical example of within the part of `request` that triggers the callback:
theCallback(theRequest, theResponse, theBody);

...并且这些参数通过 position 绑定到您的参数(reqresbody):第一个参数{{1}传递你的回调绑定到request,第二个绑定到req,第三个绑定到res

<啊>“啊,”你可能想知道,“但是,如果我没有定义body参数并且只有两个参数怎么办?”没关系;在JavaScript中,如果我们调用一个参数多于参数(或更少)的函数,那就没问题了。

这就像任何其他函数调用一样。 调用者不知道参数名称,它知道它传递的参数以及它应该传递的顺序。

例如(见评论):

body

答案 1 :(得分:0)

按订单绑定

这意味着这段代码:

// A fake "request" function
function myRequest(callback) {
  // (Using a timer to make our callback happen later, just to more closely match `request`)
  setTimeout(function() {
    // Note that this doesn't know or care what the parameter
    // names are you've used in your callback
    callback("one", "two", "three");
  }, 250);
}

// Your use of it
myRequest(function(a, b, c) {
  // a, b, and c are bound by position, not name
  console.log(a, b, c);
});

request.get(options, function(req, res, next)... 是一个请求,因为它首先出现。您选择的名称(reqreq)对数据的绑定方式没有影响。

  

我如何知道是否应该有超过3个本地函数变量以及它们将做什么?

您要么阅读ExpressJS实施代码(您不应该阅读),也可以阅读read their docsexamples here