javascript - ESLint 错误 : Unexpected assignment within a 'while' statement

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

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

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) { 件.splice(ii, 0, ','); }

error Unexpected assignment within a 'while' statement no-cond-assign

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

最佳答案

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

关于javascript - ESLint 错误 : Unexpected assignment within a 'while' statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46381082/

相关文章:

javascript - 如何验证日期?

javascript - 不同调用时不同的变量增量

java - 为什么在Java中改变for循环计数器是不好的?

javascript - 使用对象解构删除属性,没有 eslint no-unused-vars 错误

node.js - eslint 忽略模式不起作用

javascript - 使用特定数字的最后一个访问 JavaScript 数组中的位置

javascript - 使用递归合并选项 javascript 对象

c - 无法使用 while() 始终为 true?

PHP 和 MySQL - 遍历结果并显示每个条目的名称和计数

sublimetext - ESLint找不到插件 “eslint-plugin-react”