在if语句中重用代码。 (功能内部功能不好吗?)

时间:2015-02-26 21:22:42

标签: 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().then(... doRequest() ...)
    }
    else {
      doRequest()
    }
  });
});

您会看到函数doRequest()在其他函数(回调)中定义。将来的某一天,我可能需要做这样的事情,但在我definedfunction。这是错的吗?

我在这个“代码”中使用不良做法吗?我可以做得更好吗?

1 个答案:

答案 0 :(得分:1)

如果在回调范围内定义doRequest(),则它仅存在于该范围内。它被称为闭包,它在许多情况下都很有用。因此,如果您只在此范围内使用此功能,则不会出现问题,因为您不会复制内容。

另一方面,如果doRequest()执行泛型函数并且不从回调中访问数据(不作为参数发送),则应在外部定义,以便以后可以重用它。

最后,它实际上是平衡代码维护性,性能和数据访问的问题。这是关于scopes and closures的教程。