【问题标题】:How to simplify an if/else statement with assignments on it如何简化带有赋值的 if/else 语句
【发布时间】:2021-04-14 20:34:26
【问题描述】:

我想知道是否有任何方法可以简化这个 if/else 语句,只是想找到一种内联的方法来解决这个问题(由于实验目的,变量是微不足道的:

var a = false;
var b = false;
var condition = true;

if (condition) {
  a = true;
} else {
  b = true;
}

我把它当作和同事的代码挑战,如果有这种感觉就加入我们吧,干杯:)

【问题讨论】:

  • 如果我没记错的话应该可以condition ? (a = true) : (b = true)
  • 这样一个挑战的重点不就是让你自己弄清楚吗?通过让互联网为您解答问题,您有什么收获?
  • 三元会起作用,但这是不好的做法
  • 三元可以工作,我也这么想,但我们得到了一些 eslint 的提示,还是谢谢你!还有@Barmar,我只是觉得很高兴听到一些第三方的意见
  • 我给你一个提示:赋值可以用作表达式。

标签: javascript if-statement ecmascript-6 coding-style


【解决方案1】:

怎么样

var a =condition;
var b = !a;

【讨论】:

  • 根据 OP 的代码,这将始终将 a 设置为 true 并将 b 设置为 false
  • 我的意思是他们的代码也一直将 a 设置为 true,现在它以更紧凑的方式进行。
  • 听起来不错,但我一直在寻找一些内联的方法来让它看起来尽可能干净
【解决方案2】:

可以根据condition使用解构赋值真/假:

const condition = true;

const [a, b] = condition ? [true, false] : [false, true]

console.log({ a, b });

您可以将其优化为:

const condition = true;

const [a, b] =  [condition, !condition]

console.log({ a, b });

并且使用默认值,您可以将其缩短一点,尽管这是对默认值的轻微滥用:

const condition = true;

const [a, b = !a] =  [condition]

console.log({ a, b });

【讨论】:

  • 这绝对是一个有趣的答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-09
  • 2020-11-23
  • 1970-01-01
  • 2020-01-20
  • 2022-08-10
  • 1970-01-01
相关资源
最近更新 更多