Двойная реализация кажется бесполезной: toLocaleString()
имеет высокую совместимость со старыми браузерами, см. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
Другая проблема: вам не следует использовать (x?)
, потому что если x
необязательно, у вас будет проблема с null * 100
. Вам лучше проверить, является ли x числом, и сделать:
function percentageWithCommas(x) {
if(isNaN(x)) return '';
return (x * 100).toLocaleString("en-UK", {
maximumFractionDigits: 1, minimumFractionDigits: 1 }) + '%';
}
или что-то в этом роде.
Примечание: Если вы беспокоитесь, что .toLocalString
не доступно, вы можете явно проверить его существование с помощью if ((0).toLocaleString)
.