函数不返回javascript中的对象

时间:2012-11-08 11:52:18

标签: javascript jquery

我在函数中返回一个对象,但它返回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
 };
};

1 个答案:

答案 0 :(得分:4)

使用函数表达式定义函数(因此不会被提升) 后将parseXML传递给cityattr.init

当你通过它时,它尚未定义。

更改代码的顺序或使用函数声明