如何在 Javascript 中实现三元赋值?

How does one achieve ternary assignment in Javascript?

我想使用三元运算符重新分配 Javascript(或 Typescript)中的 class 变量。 this.foo 的重新分配取决于 this.foo 的当前值,我可以使用以下内容对其进行更新:

setFoo = () => {
    this.foo = this.foo ? "" : "foo";
}

但是,我想知道是否可以在不写两次 this.foo 的情况下重新分配 this.foo。这会很有帮助,因为我正在尝试在 Angular 组件(用 Typescript 编写)上动态更新 classes。

我希望能够编写如下使用 truthy/falsy 值的内容。如果 this.foo 为真,则 "" 被赋值;否则,"foo" 被分配:

setFoo = () => {
    this.foo =? "" : "foo";
}

我曾尝试搜索类似的问题,但找不到答案。我最初的想法是在 Typescript 4.0 中使用 ??= 运算符,但我认为它不会起作用。也许我理想的解决方案并不存在,因为它可能是一种不良的编程习惯。谢谢

你必须使用 IF ELSE 而不是使用三元语句, if else 会让你更好地控制写在它下面的语句并且使用起来更高效。

好问题。 很遗憾,这是不可能的。有些人使用 shorthand 版本,但它仍然包含重复:

foo = foo || otherCondition;

所以 shorthand 的 shorthand,在我看来不太有用。

简答:我会选择普通的三进制。