ES12 中的 Number.parseInt() / Number.parseFloat() 的常见误用及解决方案

阅读时长 5 分钟读完

在前端开发中,我们经常需要进行字符串和数字之间的转换。ES12 中提供了两个新的全局方法 Number.parseInt() 和 Number.parseFloat() 来帮助我们进行字符串转数字的操作。但是这两个方法在使用过程中也存在一些常见的误用,本文将介绍这些误用及解决方案。

Number.parseInt() 的误用

误用 1:未传入第二个参数

Number.parseInt() 方法用于将字符串转换为整数。它的第一个参数是要被转换的字符串,第二个参数是转换的进制数。如果不传入第二个参数,则默认为 10 进制。

这种情况下,Number.parseInt() 方法的行为和 parseInt() 函数一致。但是当我们传入的字符串以 0 开头时,就容易出现问题了。

这是因为当第一个参数以 0 开头时,Number.parseInt() 方法会将其当作 8 进制或 16 进制数进行转换。所以在使用 Number.parseInt() 方法时,一定要注意传入第二个参数,以避免这种情况的发生。

解决方案:

误用 2:传入非法字符串

Number.parseInt() 方法只能接受字符串作为第一个参数,如果传入的是其他类型的值,则会返回 NaN。

这种情况下,我们可以使用 typeof 运算符来判断传入的值是否为字符串类型。

解决方案:

Number.parseFloat() 的误用

误用:传入非法字符串

Number.parseFloat() 方法用于将字符串转换为浮点数。它的第一个参数是要被转换的字符串。如果传入的参数不是字符串,则会返回 NaN。

这种情况下,我们可以使用 typeof 运算符来判断传入的值是否为字符串类型。

解决方案:

总结

在使用 Number.parseInt() 和 Number.parseFloat() 方法时,一定要注意传入第二个参数和传入的参数类型。只有这样,才能保证我们的代码运行正确,并避免不必要的错误。

示例代码:

-- -------------------- ---- -------
-- ----------------- ---
------------------------------------ -- ---
------------------------------------ -- --
------------------------------------ -- --

---------------------------------- ----- -- --
---------------------------------- ----- -- --

---------------------------------- -- ---
----------------------------------- -- ---
----------------------------------- -- ---

----- --- - ------
-- ------- --- --- --------- -
  ---------------------------------- -- ---
-


-- ------------------- ---
----------------------------------------- -- ------
--------------------------------------- -- ------
------------------------------------- -- ---
------------------------------------- -- ---

----- ---- - ---------
-- ------- ---- --- --------- -
  ------------------------------------- -- ------
-

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6573b000d2f5e1655dcceeeb

纠错
反馈