所以,我有这段代码,它实际上有效:
(哈希将是这样的对象:{“bob” =>“12,” Roger“=>” 15“,依此类推,而isGood(key)是调用函数isGood,如果播放器是好玩家,则返回isGood或坏)

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代码。我相信错误消息来自jlint,这是一个linter。

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

最后,这是一个风格问题,但是在三元运算符中产生副作用是意料之外的,这解释了为什么lint有规则指出它。这使代码推理变得更加困难,因此通常您会看到if-then-else构造。

关于javascript - Javascript三元if语句,将其分配给变量并递增,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61611636/

10-13 08:17
查看更多