6

以异步Node函数fs.stat()为例。如果我需要fs.stat()在文件上使用,然后再做一次,结果会被遮蔽。

fs.stat(file, function(err, stats) {
  fs.stat(file, function(err, stats) {
  });
});

err变量以及stats变量都被隐藏了 - 如果我不会在第二个回调中使用第一个回调,这是否重要?重命名第二个回调变量是否更好?

一次或多次覆盖这些变量是否会对性能产生任何影响?

4

2 回答 2

6

意见问题,但我会说是的 - 不好的做法。无论如何,这里有两个问题

  • 下一个需要处理此代码的人(可能是您)可能会感到困惑。

  • 在将来的某个时间,您可能需要访问外部值以提供一些新功能(例如,要确保两个文件对象具有相同的类型?)。进行这种更改将需要对整个代码块进行烦人且容易出错的编辑。

现在使用不同的名称以防止以后出现问题。

于 2013-03-10T18:21:06.477 回答
0

是的,这是不好的做法。取决于开发人员查看它有多糟糕。如果我得到这样的东西,我首先想到的是

为什么他将errand传递stats给这个回调?

fs.stat(file, function(err, stats) {
                        \\    \\
                         \\    \\
  fs.stat(file, function(err, stats) {
  });
});

在像您现在正在做的相同功能的多个实例中工作时。您必须确保可以独立访问所有变量。

除非您确定不再使用某个变量或构造,否则您可以重新使用它。但是您必须在有用的评论中提及这一点,以确保其他开发人员理解它。


更新:

回调函数上的那些变量有范围限制,因此它们不会影响函数声明之外。

一个有效案例的例子是:

  fs.stat(file, function(err, stats) {

  });

  //Another similar functions somewhere with same varialbes
  fs.stat(file2, function(err, stats) {
  });
于 2013-03-10T18:24:09.410 回答