为什么从javascript函数返回匿名函数

时间:2016-09-24 20:44:03

标签: javascript

这里函数返回一个匿名函数:

function respondWithResult(res, statusCode) {
  statusCode = statusCode || 200;
  return function(entity) {
    if(entity) {
      return res.status(statusCode).json(entity);
    }
    return null;
  };
}
  1. 为什么我们在这里返回一个返回值的匿名函数?我们有什么优势以及何时尝试这样的事情?

  2. 这个匿名函数的参数entity的填充方式是什么?我们将res传递给了respondWithResult,接下来我们在匿名函数中得到entity后面会发生什么?这个论点填充了什么价值?

  3. 如果仅填充res,则直接执行此操作会出现问题:

    if(res){
    //bla bla
    }
    return null
    
  4. 编辑:该函数调用如下:

     return Outlet.find().exec()
        .then(respondWithResult(res))
        .catch(handleError(res));
    

    现在,res是我们传递给respondWithResult的内容。那是匿名函数在参数中得到的吗?如果是,有什么好处?为什么不直接使用res?

1 个答案:

答案 0 :(得分:3)

  

为什么我们在这里返回一个返回值的匿名函数?我们有什么优势以及何时尝试这样的事情?

这通常是因为它可以访问其声明的函数范围。即局部变量statusCoderes。如果没有更多的背景,那么为什么在这里有用是不明显的。

  

这个匿名函数的参数实体是如何以及用什么填充的?

它是一个函数参数。当它被调用时,它会被填充的任何内容(在你共享的代码中不是这样)。

正如您所指出的,该函数是返回(未立即执行)。其他一些代码稍后会调用它。

  

现在,res是我们传递给respondWithResult的东西。那是匿名函数在参数中得到的吗?如果

没有。返回的函数将传递给then。当promise结算时,结果将传递给它。