Javascript 重用if语句中的代码。(函数内部的函数是否为不良实践?)
我从一些教程中听说,在函数中定义函数是不好的做法 在我的例子中,我需要在两个嵌套回调中重用一些代码。例如:Javascript 重用if语句中的代码。(函数内部的函数是否为不良实践?),javascript,if-statement,reusability,Javascript,If Statement,Reusability,我从一些教程中听说,在函数中定义函数是不好的做法 在我的例子中,我需要在两个嵌套回调中重用一些代码。例如: router.get('...', function(req, res) { db.on('load', function(){ function doRequest() { // Valid token required to do the request. } if (!validToken) { getValidToken().t
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()
是在其他函数(回调)中定义的。将来的某一天,我可能需要做类似的事情,但是在我定义的函数中。这不对吗
我是否在这个“代码”中使用了错误的做法?我能做得更好吗?如果在回调范围内定义了doRequest()
,则它将只存在于该范围内。这叫做闭包,在很多情况下都很有用。所以,如果您只在这个范围内使用这个函数,这不是问题,因为您不会复制内容
另一方面,如果doRequest()
执行泛型函数并且不访问回调中的数据(不作为参数发送),则应该在外部定义它,以便以后可以重用
最后,这实际上是一个平衡代码可维护性、性能和数据访问的问题。这里有一个教程。这是我的观点,但我认为在函数中定义函数是一件非常好的事情。如果代码是不可重用的,并且只针对这种情况进行了定制,那么我认为最好在函数中编写代码,而不是公开它。。。另外,在其他地方编写代码只会将它与操作发生的位置分开,因此很难在视线范围内分辨出该代码在做什么。