ESLint错误:'while'语句中的意外分配

时间:2017-09-23 15:15:26

标签: javascript while-loop eslint eslint-config-airbnb

我有一个格式化货币的功能:

while ((ii -= 3) > 0) {
      pieces.splice(ii, 0, ',');
    }

此部分导致ESLint错误:

{{1}}

  

错误'while'语句no-cond-assign

中的意外分配

我应该如何编写此语句以便ESLint检查通过?

1 个答案:

答案 0 :(得分:2)

表达式ii -= 3相当于ii = ii - 3,可以替换为ii - 3 > 0。但是,因为在这种情况下它不再修改变量ii。您需要在循环中显式减少它。所以你可以像这样重写它:

while (ii > 3) { // or ii - 3 > 0
  ii = ii - 3;
  pieces.splice(ii, 0, ',');
}

几个测试:



const formatDollar = (dollar) => {
  const format = function moneyFormat(val, sign = '$ ') {
    const pieces = parseFloat(val).toFixed(2).split('');
    let ii = pieces.length - 3;
    while (ii > 3) {
      ii = ii - 3
      pieces.splice(ii, 0, ',');
    }
    return sign + pieces.join('');
  };
  return format(dollar);
};

console.log(formatDollar(12345678))
console.log(formatDollar(12345))
console.log(formatDollar(12))
console.log(formatDollar(.12))