2017-09-23 227 views
0

我有一个格式化函数货币:ESLint错误:中意外分配的 '而' 语句

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, ','); }

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

如何我应该写这个声明,以便ESLint检查通过吗?

回答

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))