簡體   English   中英

為什么從javascript函數返回匿名函數

[英]Why return anonymous function from a javascript function

這里函數返回一個匿名函數:

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?

為什么我們在這里返回一個返回值的匿名函數? 我們有什么優勢以及何時嘗試這樣的事情?

這通常是因為它可以訪問其聲明的函數范圍。 即局部變量statusCoderes 如果沒有更多的背景,那么為什么在這里有用是不明顯的。

如何以及這個匿名函數的參數實體是如何填充的?

這是一個函數論證。 它被填充在調用傳遞給它的任何東西(這不在你共享的代碼中)。

正如您所指出的, 返回該函數(不立即執行)。 其他一些代碼稍后會調用它。

現在,res是我們傳遞給responWithResult的東西。 那是匿名函數在參數中得到的嗎? 如果

不。返回的函數傳遞給then 當promise解析時,結果將傳遞給它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM