使用三元表示法设置对象

时间:2014-06-13 05:49:06

标签: javascript

如果还没有包含数据,我只想定义一个空对象dct[dpid]。 这看起来有点笨拙,有没有更好的方法来写它?

dct = {}; //global scope

稍后在函数中将dpid定义为字符串

dct[dpid] = typeof(dct[dpid])=="undefined" ? {} : dct[dpid];

3 个答案:

答案 0 :(得分:3)

The logical OR operator is commonly used as shorthand

dct[dpid] = dct[dpid] || {};

虽然只有dct[dpid]的值只能是真值才能正常工作。例如,它会错误地覆盖dct[dpid] = 0。但是,如果您的媒体资源可以包含不同的数据类型,那么这可能是设计不佳的指标。

答案 1 :(得分:0)

你可以这样做:

dct = {};
dct[dpid] = (!!dct[dpid]) ? {} : dct[dpid];

dct[dpid] = dct[dpid] || {}; //defaults to empty object

答案 2 :(得分:0)

不需要三元运算符:

if (typeof(dct[dpid])=="undefined")
    dct[dpid] = {};

但为什么不在刚开始时将其初始化呢?

dct = { dpid: {} };