[英]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;
};
}
為什么我們在這里返回一個返回值的匿名函數? 我們有什么優勢以及何時嘗試這樣的事情?
如何以及這個匿名函數的參數entity
是如何填充的? 我們將res傳遞給respondWithResult
,接下來究竟發生了什么,我們在匿名函數中得到了一個參數的entity
? 這個論點填充了什么價值?
如果僅使用res
填充,則直接執行此操作會出現什么問題:
if(res){ //bla bla } return null
編輯:該函數調用如下:
return Outlet.find().exec()
.then(respondWithResult(res))
.catch(handleError(res));
現在, res
是我們傳遞給respondWithResult
。 那是匿名函數在參數中得到的嗎? 如果是,有什么好處?為什么不直接使用res?
為什么我們在這里返回一個返回值的匿名函數? 我們有什么優勢以及何時嘗試這樣的事情?
這通常是因為它可以訪問其聲明的函數范圍。 即局部變量statusCode
和res
。 如果沒有更多的背景,那么為什么在這里有用是不明顯的。
如何以及這個匿名函數的參數實體是如何填充的?
這是一個函數論證。 它被填充在調用它時傳遞給它的任何東西(這不在你共享的代碼中)。
正如您所指出的, 返回該函數(不立即執行)。 其他一些代碼稍后會調用它。
現在,res是我們傳遞給responWithResult的東西。 那是匿名函數在參數中得到的嗎? 如果
不。返回的函數傳遞給then
。 當promise解析時,結果將傳遞給它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.