我试图了解在继承的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()完成的。

为什么在trycatch短语中都实现相同的内容?

参考


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/

10-12 06:59