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

标签 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
    

编辑:函数调用如下:

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

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

最佳答案

Why is it that we are returning an anonymous function here that returns a value? What advantages do we have and when to try something like this?

通常这样做是因为它可以访问它在其中声明的函数的范围。即局部变量 statusCoderes。如果没有更多上下文,就不会立即明白为什么它在这里有用。

How and what is this anonymous function's argument entity is populated with?

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

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

Now, res is what we pass to respondWithResult. Is that what the anonymous functions gets in the argument? If

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

关于javascript - 为什么从 javascript 函数返回匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39680799/

相关文章:

javascript - 如何同时从函数返回值和 promise ?

javascript - 倾斜文本时重复 hAxis 标签 - Google 图表

javascript - 如何使用 jQuery 动态更改 div 的渐变

javascript - 如果满足条件则发送ajax GET请求

javascript - 匿名 JavaScript 函数的括号

javascript - 如何从 Laravel 5 中的 AJAX 调用返回 View ?

javascript - 使用 SoundCloud API 检索轨道的 "Artist"字段

javascript - 带有 CommonsChunkPlugin 的 Webpack 结果在 html 文件中的捆绑顺序错误

javascript - JQuery 表情符号选择器

javascript - 收到两个不同的服务调用后显示页面