parseFloat会抛出错误吗?

时间:2016-10-31 10:53:18

标签: javascript parsefloat

在我正在处理的代码库中,我遇到了这样的代码:

try {
    price = parseFloat(price);
} catch (err) {
    console.log(err);
}

我知道在大多数情况下,price无法转换为数字,而只会获得NaN的值。我的问题是:是否存在导致错误的情况,使得try-catch-construction必要?

4 个答案:

答案 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