其它基础 - 数字处理

  • 作者: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点:

    1. 字符串以数字开头,结束部分随意,比如'18a','321312bfrewhw__ fdsf'

    2. 字符串以连续的空格开头然后到数字,结束部分随意,比如' 18a'' 321312bfrewhw__ fdsf'


最后稍微提一下,就是还有个叫Number的全局函数和parseInt效果差不多,但并不完全相同,这个比较少用,大家暂时可以不管它,偶尔会在别人的代码里看得到它,到时候再自己查吧