1

这可能是完全显而易见的,但我想确认允许通过 createServer 方法中的匿名或命名函数访问请求和响应对象的“机制”是闭包的一个例子?那就是 createServer 是外部函数,而其他返回的函数是可以访问请求和响应对象的内部函数?

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
4

1 回答 1

2

不,它们只是简单的方法参数。这是我的标准“关闭的超级清晰示例”片段:

var tipper = function (percentage) {
  return function tip(total) {
    return total + (total * (percentage / 100));
  };
};

var generous = tipper(20);
var normal = tipper(18);
var stingy = tipper(8);

console.log(generous(24.50), normal(24.50), stingy(24.50));

内部tip函数对percentage变量的持久访问,即使在外部tipper函数返回之后,也是闭包。

于 2013-10-28T03:45:42.703 回答