Javascript 三元if语句,赋值给变量并自增

Javascript ternary if statement, assigning it to a variable and incrementation

所以,我有这段代码,它确实有效: (散列将是这样的对象:{"bob" => "12,"Roger" => "15",等等},isGood(key) 是调用函数 isGood 只是 returns如果玩家是好是坏)

let score = 0;
Object.keys(hash).forEach((key) => {
  isGood(key) === true ? score += parseInt(hash[key], 10) : score -= parseInt(hash[key], 10);
});
return score;

为此我收到此错误消息:

Expected an assignment or function call and instead saw an expression

而且我设法使它工作而没有收到此错误消息,如下所示:

let score = 0;
Object.keys(hash).forEach((key) => {
  score = isGood(key) ? score + parseInt(hash[key], 10) : score - parseInt(hash[key], 10);
});
return score;

但是,为什么第一个不是正确的方法,尽管它有效?很抱歉,我在 Javascript 中遇到了约定问题。 提前致谢! 奥利维尔

这是有效的 JavaScript 代码。我相信错误消息来自 jshint,它是一个 linter。

这里有一个相关的回答: Ternary operator displays error in JSHint - Expected an assignment or function call and instead saw an expression

归根结底是风格问题,但在三元运算符中产生副作用是意想不到的,这解释了为什么 linter 有规则指出它。这使得对代码进行推理变得更加困难,因此您通常会看到一个 if-then-else 结构。