13

任何人都知道实现以下目标的更简洁/优雅的方式?

A = B if B?

谢谢。

编辑:

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

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

4

3 回答 3

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/

于 2012-06-16T02:52:52.160 回答
3

也许是这样的:

A=_ if (_=B)?

展开:

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

这将用 B 中的内容覆盖 A,但前提是它不为空,仅引用一次。

于 2014-11-23T18:30:56.493 回答
2

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

a = b || a

于 2016-06-14T06:33:38.830 回答