重用if语句中的代码.(功能内部的功能是不良做法吗?)
Reuse code inside if statement. (Is function inside function bad practice?)
我从一些教程中听说,在函数内部定义函数是一种糟糕的做法。
在我的情况下,我需要在两个嵌套回调中重用一些代码。例如:
router.get('...', function(req, res) {
db.on('load', function(){
function doRequest() {
// Valid token required to do the request.
}
if (!validToken) {
getValidToken().then(... doRequest() ...)
}
else {
doRequest()
}
});
});
您可以看到函数doRequest()
是在其他函数(回调)中定义的。在未来的某一天,我可能需要做这样的事情,但在defined
内部由我function
。这错了吗?
我在这个"代码"中使用了不良做法吗?我能让它变得更好吗?
如果doRequest()
是在回调的作用域内定义的,那么它将只存在于该作用域上。它被称为闭包,在很多情况下都很有用。因此,如果你只在这个范围内使用这个函数,这不是问题,因为你不会复制内容。
另一方面,如果doRequest()
执行通用函数,并且不访问回调中的数据(而不是作为参数发送),则应该在外部定义它,以便以后可以重用。
最后,这实际上是一个平衡代码可维护性、性能和数据访问的问题。这里有一个关于作用域和闭包的教程。
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 删除CKEditor工具栏按钮,但不删除功能
- 异步facebook功能
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- jQuery滚动功能只工作一次
- Graphiti中是否有任何工具提示功能
- React redux初始化功能,无论状态变化如何
- 在哪里可以学习ECMAScript标准中尚未包含的JavaScript功能
- 正在获取select上的功能id
- Rhino打印功能
- 使用(navigator.geolocation)检测浏览器功能错误
- 主体单击删除功能上的输入框宽度
- JQuery使用相同的功能自动完成各种输入文本
- 重用if语句中的代码.(功能内部的功能是不良做法吗?)