如果我从后端响应中收到空值,我想用'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';
}
}
});
答案 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”关键字。 无论如何,由于变量提升
,它们将被移动到那里