在 JavaScript 中,有多种方式将字符串转换为数字。其中最常见的两种是使用 parseInt()
和一元加(+
)运算符。在大多数情况下,这两种方法可以互换使用。但是,在某些情况下,它们之间存在重要的区别。
parseInt()
parseInt()
方法将字符串解析为整数,并返回一个整数。该方法接受两个参数:待解析的字符串和解析进制数。如果不传递进制数,则默认按十进制解析。例如:
parseInt("10"); // 10 parseInt("10.33"); // 10 parseInt("10 20 30"); // 10 parseInt("0x10"); // 16 (按十六进制解析)
需要注意的是,parseInt()
方法会忽略字符串中非数字的字符,并且仅返回第一个数字。因此,当字符串以非数字字符开头时,返回值可能会出乎意料。例如:
parseInt("abc123"); // NaN parseInt("$100"); // NaN
此外,如果字符串包含小数点,parseInt()
方法会截断小数部分并返回整数部分。例如:
parseInt("10.5"); // 10
一元加
一元加运算符将字符串转换为数字,并返回一个数值。如果字符串无法转换为有效的数字,则返回 NaN
。例如:
+"10"; // 10 +"10.33"; // 10.33 +"10 20 30"; // NaN +"0x10"; // 16 (按十六进制解析) +"abc123"; // NaN "$100"; // NaN +"10.5"; // 10.5
需要注意的是,在将字符串转换为数字时,一元加运算符会尽可能保留原始值的类型。例如,如果字符串表示一个整数,则返回整数;如果字符串表示一个浮点数,则返回浮点数。这一点与 parseInt()
方法不同,后者总是返回整数。
如何选择
在大多数情况下,parseInt()
和一元加运算符可以互换使用。但由于它们之间存在一些细微的差异,我们需要根据具体情况来选择合适的方法。
如果我们需要将带有非数字字符的字符串转换为数字,并仅取第一个数字,那么应该使用
parseInt()
方法。如果我们需要将字符串转换为其对应的数据类型(整数、浮点数等),并且不关心是否存在非数字字符,那么可以使用一元加运算符。
如果我们需要将一个变量强制转换为数字类型,而不管它的类型是什么,那么可以使用一元加运算符。
最后需要提醒的是,无论使用哪种方法,都需要小心处理字符串中的非数字字符和小数部分,以避免出现意外的结果。
示例代码
-- -------------------- ---- ------- -- -- ---------- ----------- ----- ---- - --------------- -- -- ----- ---- - ------------------ -- -- ----- ---- - ------------------- -- --- -- ----------------- ----- ---- - ------ -- -- ----- ---- - --------- -- ----- ----- ---- - ---------- -- --- -- ------------ ----- --- - ----- ----- ---- - ----- -- --
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/10751