【发布时间】:2018-05-12 18:34:46
【问题描述】:
我的代码(有效):
const calculateBalance = (coins) => {
console.log('coins', coins);
return coins.reduce((bal, coin) => (bal += parseInt(coin.balance)), 0);
};
基本上我只想将我投资组合中的所有硬币余额加起来,但是我遇到了一个 eslint 错误。
箭头函数不应返回赋值。
谷歌搜索我发现了这个:https://eslint.org/docs/rules/no-return-assign
JavaScript 的一个有趣但有时令人困惑的方面是赋值几乎可以在任何时候发生。因此,当真正的意图是进行比较时,错误的等号最终会导致赋值。在使用 return 语句时尤其如此。
这里有一个如何做的例子:
function doSomething() {
return (foo = bar + 2);
}
然而这是我实现的,但 eslint 仍然在抱怨......有没有办法更新我上面的代码块以使其通过?
【问题讨论】:
-
你为什么还要分配 (
+=) 那里?一个简单的添加 (+) 也可以做到这一点。 -
另外一个问题,
parseInt(无base)在做什么? -
啊,谢谢,这确实修复了我的实际代码......我想在这种情况下没有可以修复
+=的情况吗?无论如何都想发布您对逻辑的答案。 -
@NinaScholz 你是对的,我应该在那部分使用
Number()。 -
bal + +coin.balance就足够了,如果coin.balance是一个字符串。
标签: javascript return eslint