如果我有像
这样的功能request.get(options, function(req, res, body) {
console.log(req, res, body)
});
本地函数变量名是否为任意名(req,res,body)。他们可以像什么一样?如果是这样的话,请求'请求'知道如何解释每个函数变量?它是由放置顺序..如在第一个req /什么总是一个请求?我怎么知道是否应该有超过3个局部函数变量以及它们将做什么?
答案 0 :(得分:1)
本地函数变量名是否为任意名(req,res,body)。就像他们可以做任何事情一样吗?
是的,你喜欢什么。 (也就是说:使用一致的名称可以让人们轻松理解您的代码。使用Express文档中的标准名称可以更加轻松。)
如果是这种情况,'请求'如何知道如何解释每个函数变量?
没有。它调用你用参数调用它的函数,如:
// Hypothetical example of within the part of `request` that triggers the callback:
theCallback(theRequest, theResponse, theBody);
...并且这些参数通过 position 绑定到您的参数(req
,res
,body
):第一个参数{{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)...
是一个请求,因为它首先出现。您选择的名称(req
,req
)对数据的绑定方式没有影响。
我如何知道是否应该有超过3个本地函数变量以及它们将做什么?
您要么阅读ExpressJS实施代码(您不应该阅读),也可以阅读read their docs或examples here。