返回

征服JavaScript字符串转数字的重重难关

前端

JavaScript字符串转数字时,是否可以使用 + 或一元加运算符作为最快速的方法,一直以来都是面试官和求职者的热门话题。今天,我们就将揭晓谜底。

一、何为字符串转数字?

字符串转数字本质上就是将由数字字符组成的字符串转换为数字类型的数据值。在JavaScript中,有几种方法可以实现字符串转数字。

二、尝试一:+ 或一元加运算符

const num1 = +"100";
const num2 = +"100.50";
const num3 = +"abc";
console.log(num1); // 100
console.log(num2); // 100.5
console.log(num3); // NaN
  • 或一元加运算符确实可以将数字字符串转换为数字。然而,需要注意的是,如果字符串中包含任何非数字字符,它将返回NaN(不是数字)。因此,+ 或一元加运算符并不是一种可靠的方法,尤其是在处理可能包含非数字字符的字符串时。

三、尝试二:Number() 函数

const num1 = Number("100");
const num2 = Number("100.50");
const num3 = Number("abc");
console.log(num1); // 100
console.log(num2); // 100.5
console.log(num3); // NaN

Number() 函数可以将字符串转换为数字,无论字符串中是否包含非数字字符。但是,如果字符串中包含任何非数字字符,它也会返回NaN。

四、尝试三:parseInt() 函数

const num1 = parseInt("100");
const num2 = parseInt("100.50");
const num3 = parseInt("abc");
console.log(num1); // 100
console.log(num2); // 100
console.log(num3); // NaN

parseInt() 函数可以将字符串转换为整数。如果字符串中包含非数字字符,它将忽略这些字符并返回一个整数。但是,parseInt() 函数无法处理小数。

五、尝试四:parseFloat() 函数

const num1 = parseFloat("100");
const num2 = parseFloat("100.50");
const num3 = parseFloat("abc");
console.log(num1); // 100
console.log(num2); // 100.5
console.log(num3); // NaN

parseFloat() 函数可以将字符串转换为浮点数。如果字符串中包含非数字字符,它将忽略这些字符并返回一个浮点数。parseFloat() 函数可以处理小数。

六、结论

    • 或一元加运算符只能处理纯数字字符串,且容易返回 NaN。
  • Number() 函数可以处理任何字符串,但同样容易返回 NaN。
  • parseInt() 函数可以将字符串转换为整数,但无法处理小数。
  • parseFloat() 函数可以将字符串转换为浮点数,且可以处理小数。

七、面试官视角

在面试中,面试官可能故意使用 + 或一元加运算符来考察求职者对字符串转数字的理解和处理能力。如果求职者能够准确地回答出 + 或一元加运算符的局限性,并提出更可靠的方法,如 Number()、parseInt() 或 parseFloat() 函数,那么他们将大大增加面试官的印象分。

八、结语

总之,字符串转数字是一个看似简单但又容易出错的常见操作。在实际编码过程中,请根据具体场景选择合适的方法,避免不必要的麻烦。