javascript字符串转化成数字的几种方法
文章目录
前言
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 .