javascript - 为什么要在 try 和 catch 短语中实现相同的功能?

标签 javascript try-catch

我试图理解在继承的 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 短语中实现相同的功能?

引用

最佳答案

双重实现似乎没什么用: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/

相关文章:

javascript - 单击按钮后 CasperJS 解析下一页

javascript - jquery javascript 内容过滤

JavaScript 变量比较

java - 在 if else 循环中使用 try-catch

perl - 我怎么能捕捉到 "Unicode non-character"警告?

javascript - jQuery 在点击时隐藏多个 div

javascript - 当我在 Node js 中创建后调用时,为什么 Watson-conversation 对任何请求返回相同的默认响应

javascript - 在 try-catch block 内的 HTML 文件中导入 JavaScript 文件

exception - Haskell (ghc) Control.Exception 中,try 和 catch 的区别

java - try-catch 不捕获 IOException