错误的代码你能发现为什么密钥的使用会导致错误

var pipeline = {};
// (...) adding things in pipeline

for(var key in pipeline) {
  fs.stat(pipeline[key].path, function(err, stats) {
    if (err) {
      // clear that one
      delete pipeline[key];
      return;
    }
    // (...)
    pipeline[key].count++;
  });
} 

问题是 var key 只有一个实例。所有回调都将共享相同的密钥实例。在回调将触发时,该键很可能已经增加,而不是指向我们接收统计数据的元素。