JavaScript闭包:未捕获引用

JavaScript闭包:未捕获引用,javascript,closures,Javascript,Closures,我是JS的新手。我尝试函数闭包,就像在文档示例中一样,我得到了一个未捕获的引用。为什么? function fetchData(filter) { return $.ajax({ type: "GET", contentType : "application/json; charset=utf-8", dataType: "json", url: "my_url"+route, data: filter

我是JS的新手。我尝试函数闭包,就像在文档示例中一样,我得到了一个未捕获的引用。为什么?

function fetchData(filter) {
    return $.ajax({
        type: "GET",
        contentType : "application/json; charset=utf-8",
        dataType: "json",
        url: "my_url"+route,
        data: filter
      });
};

function fetchDataSource(filter) {
  var route = "data_source";
  return fetchData(filter);
};
现在,当我调用函数时:

var filter;
fetchData(filter);
我有以下错误:

未捕获引用错误:未定义路由 在获取数据时(:6:49) 在fetchDataSource(:3:10) 时间:1:1

为什么路径在我的函数中不可见


感谢

fetchData函数在其闭包中不包含路由,因为路由是在同级函数中定义的。正如您所料,有很多方法可以使路线封闭,像这样的方法可以奏效:

var route;

function fetchData(filter) {
    return $.ajax({
        type: "GET",
        contentType : "application/json; charset=utf-8",
        dataType: "json",
        url: "my_url"+route,
        data: filter
      });
};

function fetchDataSource(filter) {
  route = "data_source";
  return fetchData(filter);
};
因为路由是在包含fetchData的范围内定义的,而它不在您的范围内