This question already has answers here:
What is the scope of variables in JavaScript?
(25个答案)
2年前关闭。
我是JS的新手。我尝试了函数闭包,就像在文档示例中一样,并且得到了未被引用的参考。为什么?
现在,当我调用该函数时:
我有以下错误:
未捕获的ReferenceError:路由未定义
在fetchData(:6:49)
在fetchDataSource(:3:10)
在:1:1
为什么在我的功能中看不到路线?
谢谢
因为route是在此处包含fetchData的范围中定义的,而不在您的范围中。
(25个答案)
2年前关闭。
我是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);
我有以下错误:
未捕获的ReferenceError:路由未定义
在fetchData(: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);
};
因为route是在此处包含fetchData的范围中定义的,而不在您的范围中。
09-25 16:03