【问题标题】:Javascript assign variable if nil?如果为零,Javascript分配变量?
【发布时间】:2011-12-15 13:13:10
【问题描述】:

如果计算结果为 false,Javascript 中是否有一些简写来分配变量?

在 ruby​​ 中我可以这样做:

foo |= "bar"

如果 foo 的计算结果为 false,则将“bar”分配给 foo 所以是这样的:(使用 |= 运算符)

var cars_by_brand_and_color = {};
for (var car in parking_lot) {
   // add a brand if it doesn't exist yet;
   // cars_by_brand_and_color['chevrolet'] = {};
   cars_by_brand_and_color[car['brand']] |= {};
   // and add that color to the brand if it doesn't exist yet;
   // cars_by_brand_and_color['chevrolet']['grey'] |= {}; 
   cars_by_brand_and_color[car['brand']][car['color']] |= {};
   // now let's add that car; 
   // cars_by_brand_and_color['chevrolet']['grey']['BDB-565'] = 'Mr. Smith';
   cars_by_brand_and_color[car['brand']][car['color']][car['lisence_plate']] = car['owner']
};

【问题讨论】:

标签: javascript variable-assignment assignment-operator


【解决方案1】:

没错,JS语法是

var toAssign = mayBeNull || {};

【讨论】:

  • 我知道。但是没有速记吗?但现在我必须输入两次 varname。如果这些很长,则不利于可读性。 (见示例)
  • 不,很遗憾,没有对应于|| 的简写赋值运算符,在执行此操作时会利用其短路评估属性。
  • 或者有没有办法分配这个:cars_by_brand_and_color[car['brand']][car['color']][car['lisence_plate']] = car['owner'];直接,如果它们还不存在,则强制创建所有“关联层”?否则我只需要处理它并开始复制粘贴......不是那么干燥(在行级别上......)
  • 不,至少我想不出任何方法可以避免引用“父”对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多