这是不好的做法,以影子变量的回调
Is it bad practice to shadow variables of a callback?
以异步Node函数fs.stat()
为例。如果我需要在文件上使用fs.stat()
,然后稍后再做一次,结果将被阴影显示。
fs.stat(file, function(err, stats) {
fs.stat(file, function(err, stats) {
});
});
err
变量,以及stats
变量被遮蔽-如果我不会在第二个内使用第一个回调,这是否重要?重命名第二个回调变量是否更好?
一次或多次覆盖这些变量是否对性能有影响?
这是个人意见,但我认为是——糟糕的做法。无论如何,这里有两个问题
-
对于下一个需要处理这段代码的人(可能是你)来说,这可能会令人困惑。
-
在将来的某个时候,您可能需要访问外部值以提供一些新功能(例如,希望确保两个文件对象具有相同的类型?)。进行这种更改将需要对整个代码块进行令人讨厌且容易出错的编辑。
现在使用不同的名称,以防止以后出现问题。
是的,这是不好的做法。这取决于开发者如何看待它的糟糕程度。如果我得到这样的东西,我首先想到的就是
为什么他传递err
和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) {
});
相关文章:
- 将函数的上下文应用于javascript变量
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- 将PHP变量传递给jQuery时遇到问题
- 如何通过ajax刷新JSF填充的javascript变量
- 参数变量出现ngTable指令问题
- 通过javascript重定向html传递php变量
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 全局变量和全局对象的属性之间有什么区别吗
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 值对象在某个变量发生更改后发生更改
- Javascript变量赋值|
- AngularJS-在JSON选择器中使用变量名
- Javascript计数器变量未显示正确的值
- delete关键字在全局变量上的不同行为
- 如何在php变量中嵌入JQuery代码
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 在javascript函数中设置全局变量
- 将变量传递给外部Javascript
- 这是不好的做法,以影子变量的回调