Javascript 三元 if 语句,将其分配给变量并递增

标签 javascript object if-statement assign ternary

所以,我有这段代码,它实际上有效:
(散列将是这样的对象:{"bob"=> "12, "Roger"=> "15", etc},并且 isGood(key) 是调用函数 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 代码。我相信错误消息来自 jshint,它是一个 linter。

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

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

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

相关文章:

javascript - 进度条、最大值并重置为 100%

javascript - 如何在javascript中使用函数定义对象?

UPDATE 查询中的 MySQL IF 语句

javascript - 在 while 循环中使用 if 语句

scala - 在 if 语句中定义新值时,简单表达式的开头非法

javascript - 精细上传者: hide total progress bar (and label) upon validation fail

javascript - knockout 计算仅在 IE 中给出函数预期错误

javascript - 匿名 Javascript 函数或存储在变量中?

java - 可序列化的单例类

swift - 映射对象中的值