如何使这个代码更好地检查null条件

时间:2015-10-01 13:35:38

标签: jquery

如果我从后端响应中收到空值,我想用'NA'代替相应的值

我已经做到了,它的工作,但想知道是否有更好的方法来做到这一点。

$.ajax(
    {
        url: yql,
        dataType: 'json',
        async: false,
        success: function(data)
        {
            var DaysLow = data.query.results.quote.DaysLow;
            var DaysHigh = data.query.results.quote.DaysHigh;
            var ChangeinPercent = data.query.results.quote.ChangeinPercent;
            var Name = data.query.results.quote.Name;
            var LastTradeTime = data.query.results.quote.LastTradeTime;
            var LastTradePriceOnly = data.query.results.quote.LastTradePriceOnly;
            var Change = data.query.results.quote.Change;
            if (!DaysHigh)
            {
                DaysHigh = 'NA';
            }
            if (!ChangeinPercent)
            {
                ChangeinPercent = 'NA';
            }
            if (!Name)
            {
                Name = 'NA';
            }
            if (!LastTradeTime)
            {
                LastTradeTime = 'NA';
            }
        }
    }); 

3 个答案:

答案 0 :(得分:2)

var DaysLow = data.query.results.quote.DaysLow || "NA"

依旧......

或者甚至将默认值放在变量中并使用它,

e.g。

var DEFAULT = "NA"
var DaysLow = data.query.results.quote.DaysLow || DEFAULT

答案 1 :(得分:0)

有点棘手,但它可以帮助您声明一次您想要的属性名称(有利于将来的维护)......

//avoid undefined errors
var quote = data && data.query && data.query.results && data.query.results.quote;

var interestingProperties = ['DaysLow', 'DaysHigh', 
    'ChangeinPercent', 'Name', 'LastTradeTime', 'LastTradePriceOnly', 'Change'];

var myObject = {};
$.each(interestingProperties, function(index, prop){
    myObject[prop] = quote[prop] || "NA";
})

答案 2 :(得分:-1)

编写JS代码时的良好实践:在范围顶部声明所有变量,可以使用一个“var”关键字。 无论如何,由于变量提升

,它们将被移动到那里