2017-09-23 226 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))