Javascript三元if语句,将其赋值给一个变量并递增。

问题描述 投票:3回答:1

所以,我有这样一段代码,其实是可以用的:(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 object if-statement assign ternary
1个回答
1
投票

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

下面是一个相关的答案。三元运算符在JSHint中显示错误 - 期待一个赋值或函数调用,却看到一个表达式。

最后,这是一个风格问题,但在三元操作符中产生副作用是意料之外的,这也解释了为什么linter有规则来指出它。它使代码更难推理,所以你通常会看到一个if-then-else结构来代替。

© www.soinside.com 2019 - 2024. All rights reserved.