Skip to content

如何将字符串型转换为数值型

常用的三种方式:

js
// 将字符串型转换为数值型
let str = '123'
let str2 = '123R'
let str3 = 'R123'
let str4 = 'Infinity'
// 引申到布尔值 和 null等
let bool = true
let nullObj = null
let num = '1e3'
// 方式一: Number(str)
console.log(Number(str))       // 123
console.log(Number(str2))      // NaN
console.log(Number(str3))      // NaN
console.log(Number(str4))      // Infinity
console.log(Number(bool))      // 1
console.log(Number(nullObj))   // 0
console.log(Number(num))       // 1000
// 方式二: +str
console.log(+str)              // 123
console.log(+str2)             // NaN
console.log(+str3)             // NaN
console.log(+str4)             // Infinity
console.log(+bool)             // 1
console.log(+nullObj)          // 0
console.log(+num)              // 1000
// 方式三: parseInt(str)
console.log(parseInt(str))     // 123
console.log(parseInt(str2))    // 123
console.log(parseInt(str3))    // NaN
console.log(parseInt(str4))    // NaN
console.log(parseInt(bool))    // NaN
console.log(parseInt(nullObj)) // NaN
console.log(parseInt(num))     // 1

通过上面的代码我们可以分析得出几个结论:

  • Number :
    • 对任何不合法的数字都会返回NaN
    • 但能转换Infinity、null,布尔值等
  • + :
    • Number的返回结果基本上类似
  • parseInt :
    • 不是所有非数字都会返回 NaN。第一个字符不是数字时才返回 NaN