我试图了解在继承的JavaScript代码中找到的舍入函数:
function percentageWithCommas(x?) {
try {
return (x * 100).toLocaleString("en-UK", {
maximumFractionDigits: 1, minimumFractionDigits: 1 }) + '%';
} catch (e) {
return (x * 100).toFixed(2) + '%';
}
}
我了解到,如今在JS中四舍五入是通过
.toLocaleString(...)
而不是.toFixed()
完成的。为什么在
try
和catch
短语中都实现相同的内容?参考
Format number to always show 2 decimal places
最佳答案
双重实现似乎没有用: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)
明确检查其是否存在。关于javascript - 为什么在try和catch短语中都实现相同的功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59843731/