我试图理解在继承的 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
短语中实现相同的功能?
引用
最佳答案
双重实现似乎没什么用: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/