外部函数返回一个内部函数,可以访问外部函数的值

时间:2015-05-08 23:38:15

标签: javascript lexical-scope

我需要创建一个我将传递给数据库服务器的函数。返回的函数将单个项目作为参数,并将该项目与需求列表进行比较。

为此我需要一个函数生成函数,它接受一个数组作为它的参数,并返回内置函数,该函数内置了该数组。

以下是一个例子:

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)
  })
}

如何在内部函数中构建需求列表?

1 个答案:

答案 0 :(得分:0)

我需要使用闭包。

这是一个更简单的解决方案示例。

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

然后:

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

我仍然没有完全了解闭包的实现方式,但确实如此。