Javascript 三元if语句,赋值给变量并自增
Javascript ternary if statement, assigning it to a variable and incrementation
所以,我有这段代码,它确实有效:
(散列将是这样的对象:{"bob" => "12,"Roger" => "15",等等},isGood(key) 是调用函数 isGood 只是 returns如果玩家是好是坏)
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 结构。
所以,我有这段代码,它确实有效: (散列将是这样的对象:{"bob" => "12,"Roger" => "15",等等},isGood(key) 是调用函数 isGood 只是 returns如果玩家是好是坏)
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 结构。