如何确定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);
…和那些参数绑定到您的参数( req
, res
, body
)的位置 :第一个参数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的名称( req
, res
)对数据绑定的方式没有影响。
我怎么知道是否应该有超过3个本地函数variables,他们会做什么?
您可以阅读ExpressJS实现代码(不应该),也可以阅读他们的文档或示例 。