【问题标题】:ESLint error: Unexpected assignment within a 'while' statementESLint 错误:“while”语句中的意外赋值
【发布时间】:2017-09-23 15:15:25
【问题描述】:

我有一个格式化货币的函数:

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

这部分导致 ESLint 错误:

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

错误“while”语句中的意外分配无条件分配

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

【问题讨论】:

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


    【解决方案1】:

    表达式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))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-25
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多