JavaScript if语句中的变量范围

时间:2017-08-29 13:53:05

标签: javascript scope

我正在尝试从JSON获取一些数据,这是我的功能

var process_data = function(data) {
    var object  = {};
    object.date = data.created_at;
    object.text = data.text;
    object.name = data.user.name;
    object.screen_name = data.user.screen_name;
    object.imgURL = data.user.profile_image_url;
    object.media = {};


    if (data.entities.media != undefined) {
        object.media.url = data.entities.media[0].media_url;
        // CONSOLE LOG WORKS HERE
        //console.log(object.media.url);

    } else {
        object.media = 'images/1500x500.jpeg'
    } 
    // CONSOLE LOG HERE IS UNDEFINED
    console.log(object.media.url);

    connection.sendUTF(JSON.stringify(object));
    //console.log('obj is ' + (JSON.stringify(object)));
}

该变量在if语句中输出预期的数据,但在其外侧未定义。我猜它与范围有关但我以前从未遇到过这个问题。我是一个真正的菜鸟,所以我希望这不是一个愚蠢的问题..:/我已经好好看看其他问题,但我似乎无法找到答案。

2 个答案:

答案 0 :(得分:2)

data.entities.mediaundefined

您正在将object.media分配给图像网址。

object.media = 'images/1500x500.jpeg'

在这种情况下,object.media.url未定义

答案 1 :(得分:1)

您可以在一行中编写if和else语句。尝试编写非常干净的代码。以下代码应该可以使用



object.media.url = (data.entities.media != undefined) ? data.entities.media[0].media_url : 'images/1500x500.jpeg';