所以,我有这样一段代码,其实是可以用的:(hash会是这样的一个对象。{"bob" => "12, "Roger" => "15", 等等}, 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。
下面是一个相关的答案。三元运算符在JSHint中显示错误 - 期待一个赋值或函数调用,却看到一个表达式。
最后,这是一个风格问题,但在三元操作符中产生副作用是意料之外的,这也解释了为什么linter有规则来指出它。它使代码更难推理,所以你通常会看到一个if-then-else结构来代替。