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()
执行泛型函数并且不访问回调中的数据(不作为参数发送),则应该在外部定义它,以便以后可以重用


最后,这实际上是一个平衡代码可维护性、性能和数据访问的问题。这里有一个教程。

这是我的观点,但我认为在函数中定义函数是一件非常好的事情。如果代码是不可重用的,并且只针对这种情况进行了定制,那么我认为最好在函数中编写代码,而不是公开它。。。另外,在其他地方编写代码只会将它与操作发生的位置分开,因此很难在视线范围内分辨出该代码在做什么。