【问题标题】:Most concise way to assign a value from a variable only if it exists in CoffeeScript?仅当变量存在于 CoffeeScript 中时才从变量中分配值的最简洁方法?
【发布时间】:2016-06-14 14:33:38
【问题描述】:

有人知道实现以下目标的更简洁/优雅的方式吗?

A = B if B?

谢谢。

编辑:

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

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

【问题讨论】:

  • 对我来说已经非常优雅了?你还有什么期待?
  • A 和 B 的东西只被引用一次。抱歉,我最初的问题确实缺乏特异性。
  • 最佳: Coffeescript:a = b ? a Javascipt:var a; a = typeof b !== "undefined" && b !== null ? b : a; Coffeescript:A = B if B? Javascript:var A; if (typeof B !== "undefined" && B !== null) { A = B; }我会选择“mu太短了”的答案。

标签: coffeescript


【解决方案1】:

你可以说:

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/

【讨论】:

  • 啊。谢谢。这确实更短。但是,我正在寻找一个仅引用 A 和 B 一次的解决方案。抱歉,我最初的问题在这方面缺乏特异性。编辑这个。
  • 顺便说一句,我刚刚注意到您的用户名。巧合?
  • @user473911:someArray 是数组还是对象?
  • @muistooshort:感谢发现错字。这是我想到的一个对象......尽管最终,数组是 javascript 中的对象。
  • @LarryBattle,这确实是迄今为止最好的答案。
【解决方案2】:

可能是这样的:

A=_ if (_=B)?

扩展:

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

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

【讨论】:

    【解决方案3】:

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

    a = b || a

    【讨论】:

      猜你喜欢
      • 2014-03-24
      • 1970-01-01
      • 2016-12-10
      • 2013-10-07
      • 2010-09-06
      • 1970-01-01
      • 2010-09-18
      • 2019-07-02
      • 2017-04-25
      相关资源
      最近更新 更多