如果还没有包含数据,我只想定义一个空对象dct[dpid]
。
这看起来有点笨拙,有没有更好的方法来写它?
dct = {}; //global scope
稍后在函数中将dpid
定义为字符串
dct[dpid] = typeof(dct[dpid])=="undefined" ? {} : dct[dpid];
答案 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: {} };