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

如果我有这样的function

request.get(options, function(req, res, body) { console.log(req, res, body) }); 

是本地函数variables名称是任意的(req,res,body)。 他们可以做什么? 如果是这样的话,“请求”如何知道如何解释每个函数variables? 这是由放置顺序..如在第一请求/无论总是将要求? 我怎么知道是否应该有超过3个本地函数variables,他们会做什么?

是本地函数variables名称是任意的(req,res,body)。 他们可以做什么?

是的,任何你喜欢的。 (也就是说:使用一致的名称可以让人们很容易理解你的代码,使用Express文档中的标准名称可以更容易。)

如果是这样的话,“请求”如何知道如何解释每个函数variables?

它不。 它调用你使用参数调用它的函数,如下所示:

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

…和那些参数绑定到您的参数( reqresbody )的位置 :第一个参数request传递您的callback绑定到req ,第二个res和第三个body

“啊,”你可能想知道,“但是如果我没有定义一个body参数而只有两个呢? 没关系; 在JavaScript中,如果我们使用更多的参数来调用函数,而不是使用参数(或更less),那就没问题了。

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

例如(见评论):

 // 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)... 

req是一个请求,因为它首先出现。 您select的名称( reqres )对数据绑定的方式没有影响。

我怎么知道是否应该有超过3个本地函数variables,他们会做什么?

您可以阅读ExpressJS实现代码(不应该),也可以阅读他们的文档或示例 。