只有在CoffeeScript中存在值时才能从变量中分配值的最简洁方法?

时间:2012-06-16 00:34:27

标签: coffeescript

任何人都知道如何更简洁/更优雅地实现以下目标?

A = B if B?

感谢。

编辑:

我正在寻找仅引用A和B一次的解决方案。并编译成
if (typeof B !== "undefined" && B !== null) { A = B; }
或类似的东西。

要有这个简短的帮助,可以使下面的内容更具可读性:
someObject[someAttribute] = (someOtherObject[someOtherAttribute] if someOtherObject[someOtherAttribute]?)
这是我提问的动机。

3 个答案:

答案 0 :(得分:20)

你可以说:

a = b ? a

例如,这个:

a = 11
a = b ? a
console.log(a)
b = 23
a = b ? a
console.log(a)​

会在控制台中为您提供1123(演示:http://jsfiddle.net/ambiguous/ngtEE/

答案 1 :(得分:3)

可能是这样的:

A=_ if (_=B)?

展开:

if ((_ = B) != null) {
  A = _;
}

这将覆盖A中的B,但只有在它不为空时,才引用两次。

答案 2 :(得分:2)

不确定Coffee Script,但你可以在常规的javascript中使用OR运算符,如下所示:

a = b || a