所以,我有这段代码,它实际上有效:
(散列将是这样的对象:{"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/