JavaScript闭包:未捕获引用
我是JS的新手。我尝试函数闭包,就像在文档示例中一样,我得到了一个未捕获的引用。为什么?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
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的范围内定义的,而它不在您的范围内