JavaScript对象动态添加属性问题

js文件代码如下

function searchPointByName(area) {
    var weatherData= new Object();
    $.ajax({
        url:'http://wthrcdn.etouch.cn/weather_mini?city='+area,
        type:'POST',
        dataType:'jsonp',
        success:function (data) {
            if(data.status=='1002'){
                alert('没有找到该城市,请重新选择');
                return false
            }else{
                weatherData.ganmao=data.data.ganmao;
                weatherData.wendu=data.data.wendu;
                weatherData.yesterday=data.data.yesterday;
                weatherData.city=data.data.city;
            }


        }
    });
    console.log(weatherData);
    console.log(weatherData.city);
    return weatherData;

}

为什么在主HTML页面里var weatherData=searchPointByName(area);console.log(weatherData)在控制台打印出来的是图片描述 注意Object {}里面是有内容的,点击打开后是这样图片描述为什么通过weatherData.XXX 如 weatherData.city 拿到里面的值为undefind

阅读 7.5k
4 个回答

图片描述

你点击那个红色区域的感叹号,你应该会看到"Value below was evaluated just now."。
意思,就是你点击打开后,看到的值并不是console.log执行时候weatherData的值

你可以用console.log(JSON.stringify(weatherData)) 来试验下

想说一句, 为什么 当status = 1002 知道在里面 return false了,成功了 就在外面return 了

ajax是异步的

weatherData 是一个对象哦 所以那看到就是这样喽 你的js面向对象不知道学的怎么样?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题