簡體   English   中英

外部函數返回內部函數,可以從外部函數訪問值

[英]Outer function returns an inner function with access to values from outer function

我需要創建一個函數,該函數將傳遞給數據庫服務器。 返回的函數將單個項目作為參數,並將該項目與需求列表進行比較。

為此,我需要一個函數生成函數,該函數將數組作為參數,並返回內置該數組的內部函數。

這是一個例子:

function create_query (list_of_requirements) {
  return function (item) {
    var is_match = true
    // the next function sets is_match to false if the item fails
    list_of_requirements.forEach(check_if_item_meets_requirement)
    return is_match
  }
}

使用此示例:

function search (parsed_user_string) {
  db.get(create_query(parsed_user_string)).then(function(results){
    show_results(results)
  })
}

如何將需求列表構建到內部函數中?

我需要使用閉包。

這是解決方案的一個簡單示例。

function makePrinter (num) {
  (return function () {
    print(num)
    })
}

接着:

var print5 = makePrinter(5)
print5() > prints 5!

我仍然不太了解閉包如何完成此任務,但確實如此。

暫無
暫無

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

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