其它基础 - 数字处理 ¶
作者:KK
发表日期:2016.3.1
数字处理是一个比较重要的基础知识点,下面总结我的一些经验分享给大家
纯数字字符串与纯数字相加会变成字符串相加
如果一个字符串里面是一个数字,那么这个数字不能进行数学的加法计算,而是只能进行字符串加法,比如
alert('9' + 1); //91 alert(9 + 1); //10
'9' + 1
这里就是字符串数字进行加法的后果,最后被当成字符串加法,而不是数学的加法
prompt
永远只返回字符串对输入数字的影响当用prompt函数向用户获取一个输入的数字时,这个数字其实是一个字符串,prompt函数最终都是返回了一个字符串,不会因为输入的是数字就返回数值
var age = prompt('请输入你的岁数'); alert(typeof(age)); //string,字符串类型 alert('你2年后的岁数是' + (age + 2)); //如果输入18岁,那2年后不是20岁,而是提示182岁
那怎么办?如果要输入一个数字,对这个数字进行数学计算怎么办?都被当作字符串加法啦?----办法不是没有,看下面
parseInt函数能将纯数字字符串转换成纯数字
var age = '18'; alert('age的类型是 ' + typeof(age)); alert('age与数值做加法结果 ' + (age + 2)); var age2 = parseInt(age); //转换成数值型 alert('age2的类型是 ' + typeof(age2)); alert('age与数值做加法结果 ' + (age2 + 2)); //两个纯数字做加法,得到正常的数学运算结果
其实parseInt函数转换的字符串前面有数字,就会取那个数字
var age = '18a'; var age2 = parseInt(age); alert(age2); //18 取了前面两个数字,去掉了后面与数字无关的部分 alert(typeof(parseInt(age2))); //number age = ' 19a'; //前面还加空格 age2 = parseInt(age); alert(age2); //19 其实是先去掉空格再取前面的数字 alert(typeof(parseInt(age2))); //number
NaN
表示“Not a number"(不是一个数字)JS中有一个叫NaN的东西,当parseInt('a')这样的时候,由于被转换只是一个英文字母,于是引脚引擎在运行程序时可能因为无从判断要转换成哪个数字,于是就返回了一个叫做
NaN
的值你试试
alert(parseInt('a'));
会提示“NaN",表示“这不是一个数字“,当然啦,它只是一个字符串,内容是字母a还有
parseInt('')
又或者parseInt(true)
这些等等结果都会变成NaN,唯一能让它转换出数字的内容就是2点:字符串以数字开头,结束部分随意,比如
'18a'
,'321312bfrewhw__ fdsf'
字符串以连续的空格开头然后到数字,结束部分随意,比如
' 18a'
、' 321312bfrewhw__ fdsf'
最后稍微提一下,就是还有个叫Number
的全局函数和parseInt效果差不多,但并不完全相同,这个比较少用,大家暂时可以不管它,偶尔会在别人的代码里看得到它,到时候再自己查吧