无法检查变量是否为空

时间:2015-03-03 14:41:56

标签: javascript

我有一个json响应如下:

response:{
    attempts: 0,
    created_at: "2015-03-03 20:05:50",
    created_by: null,
    deleted_at: null,
    display_name: null,
}

在JavaScript中,我按如下方式检查了它:

if(data.response.display_name!=null){
    return toTitleCase(data.response.display_name);
}

根据上面的代码,display_name永远不会传递给toTitleCase。但是,上述条件被验证为false,因此将null对象传递给函数。环顾四周,我发现了这个:https://stackoverflow.com/a/26330848/1411975

但是,尝试将其作为

if(data.response.display_name!='null'){
    return toTitleCase(data.response.display_name);
}

也给了我错误。如何检查值是否为空?我无法控制传入的数据,所以我无法将其更改为未定义。

编辑:我错过的任何额外信息。

  • 服务器位于Laravel中,如果这会产生影响并且从MySQL数据库中选择值。
  • 上面粘贴的response对象是正确的。
  • data.response

    的Console.log
    attempts: 0
    created_at: "2015-03-03 20:05:50"
    created_by: null
    deleted_at: null
    display_name: null
    
  • data.response.display_name

    的Console.log
    null
    
  • 使用第二种方法时出错:

    TypeError: Cannot read property 'replace' of null
    

    由于toTitleCase已实施replace()方法。

EDIT [2]:

 function returnUsername(data){
    if(data.response.display_name !="" || data.response.display_name!=null){
        return toTitleCase(data.response.display_name);
    }else{
            return toTitleCase(data.response.username);
    }
}
function toTitleCase(str){
    return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}

完整追踪:

TypeError: Cannot read property 'replace' of null
at toTitleCase (app.js:850)
at returnUsername (app.js:842)
at app.js:498
at angular.js:8148
at l.promise.then.J (angular.js:11659)
at l.promise.then.J (angular.js:11659)
at angular.js:11745
at h.$get.h.$eval (angular.js:12788)
at h.$get.h.$digest (angular.js:12600)
at h.$get.h.$apply (angular.js:12892)

0 个答案:

没有答案