javascript字符串转化成数字的几种方法

image.png


文章目录



前言

javascript因为他的不完美,
导致了字符串可以有好几种转化为数字的方法,
但是可用的方法越多,留下的坑也就比较多.


parseInt

几乎所有浏览器都能解析处理此方法.

console.log(parseInt('001一介布衣');
//有些老旧浏览器会返回 0
//现代浏览器会返回 1

此方法优点:
** 处理速度最快**


Number

Number 几乎所有浏览器都支持解析,
但是它针对参数是否有引号会做出不同的解析.

console.log(Number('0028'));
输出:28

console.log(Number(023));
输出:19

当 Number(023) 时,不带引号的参数js把他理解为 八进制的19
针对十六进制不带引号的数,解析同上.

此方法是转化解析中最慢的,
当你的参数不能确定一定是字符串 (包含引号)时,最好不要用此方法.


一元运算符

当你的参数是一个数字字符串时,此方法解析最快.
什么是数字字符串:

'0198'
"23"
"007"
"2019"

下面混入其他非数字字符时,此方法会返回 NaN

'一介布衣001'
'87人生78'
'er666'
'55.jpg'

常用来转化数字用的一元运算符

*
/
"098"*1 = 98
'500'/1 = 500

当你确定参数一定是数字字符串时,用上面的方法解析快而且准.
注意:当遇到 + 一元运算符时, javascript 全部处理成字符串拼接:

'002'+1 = '0021'
"FADFA222"+1 = "FADFA2221"

按位非

可以把字符串转换成整数,但他不是浮点数。如果是一个字符串转换,它将返回 0

~~

俩个波浪线
此方法的优点是,任何被转化的参数都会返回整数

~~0.33; // returns 0
~~"3.1415926"; // returns 3
~~"88"; // returns 88
~~"一介布衣"; // returns 0

如果字符串参数中包含数字,只取其整数部分(不会四舍五入)
如果字符串参数中不包含任何数字,直接返回 0 .

出自:javascript字符串转化成数字的几种方法

回到顶部