我在函数中返回一个对象,但它返回undefined
为什么?这是我的代码
parseXML = function (xml) {
return {
lon : $(xml).find('GEOCODE').find("LOC").attr('lon'),
lat : $(xml).find('GEOCODE').find("LOC").attr('lat'),
x : $(xml).find('GEOCODE').find("LOC").attr('x'),
y : $(xml).find('GEOCODE').find("LOC").attr('y')
};
},
searchRoute = function () {
var userloc, dest;
userloc = cityattr.init(from, to, fromurl, parseXML);
//dest = cityattr.init(from, to, fromurl, parseXML);
console.log(userloc);
};
更新
当我在parseXML中执行console.log()
时,它会返回正确的对象
parseXML = function (xml) {
var obj = {
lon : $(xml).find('GEOCODE').find("LOC").attr('lon'),
lat : $(xml).find('GEOCODE').find("LOC").attr('lat'),
x : $(xml).find('GEOCODE').find("LOC").attr('x'),
y : $(xml).find('GEOCODE').find("LOC").attr('y')
};
console.log(obj);
},
更新2
仍然会返回undefined
parseXML = function (xml) {
return {
lon : $(xml).find('GEOCODE').find("LOC").attr('lon'),
lat : $(xml).find('GEOCODE').find("LOC").attr('lat'),
x : $(xml).find('GEOCODE').find("LOC").attr('x'),
y : $(xml).find('GEOCODE').find("LOC").attr('y')
};
},
这是cityattr的代码
var Xml = function () {
var to, from, url, result,
init = function (fromaddress, toaddress, link, callback) {
from = fromaddress;
to = toaddress;
url = link;
requestXml(callback);
},
requestXml = function (callback) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: callback
});
},
getResult = function () {
return result;
};
return {
init : init,
getResult : getResult
};
};
答案 0 :(得分:4)
使用函数表达式定义函数(因此不会被提升) 后将parseXML
传递给cityattr.init
。
当你通过它时,它尚未定义。
更改代码的顺序或使用函数声明。