【问题标题】:Is there a better way to perform "x = y ? y : x"? Specifically in JS有没有更好的方法来执行“x = y?y:x”?具体在 JS
【发布时间】:2014-01-30 08:23:56
【问题描述】:

它看起来是如此多余和丑陋。我最近经常使用这种表达方式,一定有另一种方式。

"如果 y 有效,则将 x 赋值给 x,否则保持 x 不变"

x = y ? y : x

【问题讨论】:

  • if (y) x = y; 更容易阅读。
  • 而且实际上保存了一个操作,只要 y = 0
  • x = y || x; 是非常惯用的恕我直言(如opts = opts || {};
  • 惯用的Javascript方式是x = y || x
  • 感谢 Thilo,这确实更令人愉悦。对于逻辑“或”方式,请参阅我对下面答案的评论。

标签: javascript ternary-operator


【解决方案1】:

你可以这样做,通过使用逻辑or

x = y || x;

如果ytruthy,则x 在赋值后将等于y。

否则x 将是相同的。

这里是解释

查找其他类型部分:mdn re-introduction to javascript

更新:如果您打算使用 位运算符 来解决问题,请注意它仅适用于 32 位整数交换上面提到的xy 等值。

【讨论】:

  • 但是当它们都有效时会发生什么?我测试了一下,它似乎选择了第一个值,我认为它是可靠的?
  • 谢谢。您会认为这似乎很常见,会有一个 '|=' 或其他东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多