赋值作为三元的一部分 if

Assignment as part of ternary if

我在我们的代码库中找到了以下片段。这是被广泛使用并且没有引起任何问题的代码,我不明白为什么。

element = someBoolean ?
            element = parentElement :
            element;

第二行是不是应该将element重置为空值或者设置为parentElement

之后的东西

ETA:我想知道 element = parentElement 子句的 return 值是多少,因为那里似乎没有任何 return 值。我忘记了java中有多次赋值的概念,所以元素会被设置两次。

Shouldn't the second line be resetting element to an empty value or something after it is set to parentElement

我不知道你为什么会这么想。整个语句的目的是潜在地将 element 重新分配给 parentElement。该语句等效于:

element = someBoolean ?
            parentElement:
            element;

这是因为赋值语句 (element = parentElement) 具有 RHS 值(即 parentElement)。不过,我会简单地这样写:

if (someBoolean) {
    element = parentElement;
}

赋值非常无用,因为您的代码可以写成...

element = someBoolean ?
            parentElement:
            element;

只是在你的代码中,你没有立即return parentElement,而是先将element设置为parentElement,然后将element设置为element.