很抱歉,如果这个问题太天真,无法提问或已经得到解答。我对javascript匿名回调函数感到困惑,它可以访问调用函数返回的数据。 E.g:
var server = http.createServer(function(request, response){
response.writeHead(200, {'Content-Type': 'text/html'});
response.write('hello world');
response.end();
});
任何人都可以解释匿名函数的参数如何访问http.createServer()
函数返回的数据?或者我出错了?提前为任何错误道歉,因为这是我的第一个问题。
答案 0 :(得分:0)
createServer
数据不会返回。
createServer
将在未来的某个时刻调用函数并在当时传递参数。
您无法看到执行该操作的代码(嗯,您可以,因为Node.js是开源的,如果您真的想要,可以将其挖出来),但您不需要因为它的行为是记录在案的。
与此相比:
var thing = example_that_takes_a_callback(function(request, response) {
console.log(request, response);
});
function example_that_takes_a_callback (callback) {
callback(1,2);
setTimeout(function () { callback(3,4); }, 1000);
setTimeout(function () { callback(5,6); }, 2000);
return 1;
}

答案 1 :(得分:0)
简单地说:您作为参数传递给createServer()的匿名函数在后者的代码中被调用,并带有适当的参数request&响应。
答案 2 :(得分:0)
外部函数将回调作为参数,并使用一些参数调用它。也许一个更简单的例子可以更好地解释它:
有一个函数将另一个函数作为参数,并使用作为参数传递的'value'字符串调用它:
function fn(cb) {
cb('value');
}
现在当你跑:
fn(function (val) {
console.log(val);
});
你将打印字符串'value'但不是因为第二个(匿名)函数可以访问fn
函数内的变量或值,但是因为匿名函数将一些数据作为参数传递 - 在此示例中称为val
。