重用if语句中的代码.(功能内部的功能是不良做法吗?)

Reuse code inside if statement. (Is function inside function bad practice?)

本文关键字:功能 不良 内部 if 代码 重用 语句      更新时间:2024-06-30

我从一些教程中听说,在函数内部定义函数是一种糟糕的做法。

在我的情况下,我需要在两个嵌套回调中重用一些代码。例如:

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

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