如果为零,Javascript分配变量?

Posted

技术标签:

【中文标题】如果为零,Javascript分配变量?【英文标题】:Javascript assign variable if nil? 【发布时间】: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']
;

【问题讨论】:

developer.mozilla.org/en/JavaScript/Reference/Operators 【参考方案1】:

没错,JS语法是

var toAssign = mayBeNull || ;

【讨论】:

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

以上是关于如果为零,Javascript分配变量?的主要内容,如果未能解决你的问题,请参考以下文章

欺骗C编译器将整个结构分配为零,没有for循环[重复]

类级变量集总是为零,为啥?

为啥我的 UILabel 变量总是为零?

JavaScript 如何决定为数值分配多大的内存?

Java基础—java创建对象相关

Javascript通过解构重新分配let变量[重复]