在我正在处理的代码库中,我遇到了这样的代码:
try {
price = parseFloat(price);
} catch (err) {
console.log(err);
}
我知道在大多数情况下,price
无法转换为数字,而只会获得NaN
的值。我的问题是:是否存在导致错误的情况,使得try-catch-construction必要?
答案 0 :(得分:6)
是否会出现错误,需要使用try-catch-construction?
是。除了引用错误(因为未声明price
)或parseFloat
被某些不是函数等的内容覆盖,内置的 parseFloat
也会抛出例外强>
但是传入字符串时它确实不会抛出错误。它只会在尝试将参数转换为字符串失败时抛出异常。其中的例子包括:
[Symbol.toPrimitive]
,.valueOf
或.toString
方法的对象答案 1 :(得分:1)
没有案件可以抛出错误。
始终返回 NaN ,如果该字符无法转换为数字。
答案 2 :(得分:0)
parseFloat()
本身只返回并且从不抛出错误。但是,如果尚未在上下文中声明变量price
,则会出现如下错误:
Uncaught ReferenceError: price is not defined
它解释了为什么周围有try / catch块的原因。
所以回答你的问题:是的,如果你不能相信以前的js执行/上下文(例如由于广告拦截器或类似的东西),有些情况是必要的,但不是它不是抛出的函数parseFloat()
错误是解释器。
答案 3 :(得分:0)
简短回答:不。
来自MDN的
从给定字符串解析的浮点数。如果第一个字符无法转换为数字,则返回NaN
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat