一、字符串 string
转 数字 number
1、使用 | 单管道符
let str = '123'
str | 0
console.log(str | 0) // 123 数字类型
2、使用>>>
位移运算符
let str = '123'
str >>> 0
console.log(str >>> 0) // 123 number类型
3、使用 Number()
内置函数转
let str = '123'
let num = Number(str);
console.log(num); // 123
注意:
如果字符串不是有效的数字(如 "123abc"),会返回 NaN。
可以处理 null(转为 0)
、undefined(转为 NaN)
、布尔值(true 转为 1,false 转为 0)
等。
4、使用一元加运算符 +
隐式转换
let str = '123'
+str
console.log(+str) // 123
注意:
简洁,但可读性可能不如 Number()
。
行为与 Number()
完全一致。
5、map(Number)
对数组中的每个元素调用 Number()
函数,将数组中的字符串批量转换为数字。
let strArray = ["1", "2", "3"];
let numArray = strArray.map(Number); // [1, 2, 3]
map(Number)
是 Array.prototype.map
和 Number
函数的结合,等价于 .map(x => Number(x))
,会遍历数组,对每个元素调用 Number()
6、parseInt()
和 parseFloat()
解析字符串中的整数或浮点数。
let str = "123.45";
let intNum = parseInt(str); // 123(整数部分)
let floatNum = parseFloat(str); // 123.45
注意:
parseInt
可以指定进制(如 parseInt("1010", 2)
将二进制字符串转为十进制数字 10)。
会忽略字符串开头的空格,直到找到第一个非空格字符。如果第一个非空格字符不是数字或符号(+/-),返回 NaN。
如果字符串包含非数字字符:
Number()
和 +
会返回 NaN
。
parseInt()
和 parseFloat()
会尽可能解析前面的数字部分。