1.JS中的数据类型:数字、字符串、布尔值、函数、对象(obj、[]、{}、null)、未定义
typeof判断数据类型
eg:var i=100; alert(typeof i);
2.数据类型转换
(1)字符串转换成数字
Number(); 只能转换纯数字的字符串,包含非数字时不能转
//字符串 var a='100'; alert(Number(a)); //100 var a1='0000100'; alert(Number(a1)); //100 var a2='+100'; alert(Number(a2)); //100 var a3=''; alert(Number(a3));//0 var a4=' '; alert(Number(a4));//0 //布尔值 var a5=true; alert(Number(a5));//true=>1,false=>0 //数组 var a8=[]; alert(Number(a8));//0 //空 var a10=null; alert(Number(a10));//0 /////////////////////////////////////////////////////////////////////////////////////// //对象 var a6=function(){alert(1);}; alert(Number(a6));//NaN var a7=json{abc:123}; alert(Number(a7));//NaN var a9=[1,2,3]; alert(Number(a9));//NaN var a4=undefind; alert(Number(a4));//NaN
parseInt();
整形转换;
从左向右转换遇到非数字停止转换;
只能转换字符串类的数字;
var b='100px123456789'; alert(parseInt(b));//100
var b='dgdg100px123456789'; alert(parseInt(b));//NaN
var b='100px123456789'; alert(parseInt(b,10));//按十进制转换
alert(parseInt(b,2));//按二进制转换
alert(parseInt(b,16));//按十六进制转换
parseFloat();
浮点数转换
parseInt()与parseFloat()妙用
//判断一个数是正数还是小数 var num="100"; if(parseIn(num)==parseFloat(num)){ alert('num是一个正数’); }else{ alert('num是一个小数’); }
(2)隐式数据类型转换
//减、乘、除、取模可以把字符串类的数字转换成数字 alert('200'-3); //107 //加号 alert(200+'1'); //2001 把数字转换成了字符串 //++、-- var a='10'; a++; alert(a); //11 a被转换成了数字 //> < alert('10'>9); //true;转换成了数字比较 alert('10'>'9'); //false;转换成了字符串比较 //!取反 alert(!'ok'); //false //==先转换再判断 alert('2'==2); //true //===不发生转换,先判断类型 alert('2'===2); //false
(3)NaN
NaN:not a number 不是个数字的数字类型
//一旦写程序中出现:NaN肯定进行了非法的运算操作 alert('200px'-100); //NaN是false //NaN和自身不相等
(4)isNaN()
isNaN:is not a number 不是数字
判断某些值是不是数字,不是数字返回true,是数字返回false
alert(isNaN(2)); //false //isNaN()判断时先使用Number()进行转换,然后再进行判断 alert(isNaN('265')); //false
(5)应用
根据给出的数组按条件查找符合条件的元素
HTML部分
<p>'100px','abc'-6,[],-98765,34,-2,0,'300',,function(){alert(1);},null,document,[],true,'200px'-30,'23.45元',5,Number('abc'),function(){alert(3);}</p> <input type="button" name="" id="" value="找到所有数字" /> <input type="button" name="" id="" value="找到可以转换成数字的" /> <input type="button" name="" id="" value="判断转换后的数字的最大值" /> <input type="button" name="" id="" value="NaN所在的位置" /> <div></div>
JS部分
var arr=['100px','abc'-6,[],-98765,34,-2,0,'300',,function(){alert(1);},null,document,[],true,'200px'-30,'23.45元',5,Number('abc'),function(){alert(3);}]; var btn=document.getElementsByTagName("input"); var txt=document.getElementsByTagName("div")[0]; //找到所有数字 btn[0].onclick=function(){ var arr1=[]; for (var i=0;i<arr.length;i++) { if(typeof arr[i]=="number"&&!isNaN(arr[i])){ arr1.push(arr[i]); } } txt.innerHTML=arr1; } //找到所有可以转换成数字的元素 btn[1].onclick=function(){ var arr1=[]; for (var i=0;i<arr.length;i++) { var num=parseFloat(arr[i]) if(!isNaN(num)){ arr1.push(arr[i]); } } txt.innerHTML=arr1; } //判断最大值 btn[2].onclick=function(){ var arr1=[]; for (var i=0;i<arr.length;i++) { var num=parseFloat(arr[i]); if(!isNaN(num)){ arr1.push(num); } } var max=arr1[0]; var len=arr1.length; for (var i=0;i<len;i++) { if(arr[i]>max){ max=arr[i]; } } txt.innerHTML=max; } //NaN所在的位置 btn[3].onclick=function(){ var arr1=[]; for (var i=0;i<arr.length;i++) { if(isNaN(arr[i])&&typeof arr[i]=="number"){ arr1.push(i); } } txt.innerHTML=arr1; }
简单判断QQ号码
HTML部分
<input type="text" id="txt"/> <input type="button" value="验证" id="btn"/>
JS部分
//判断QQ号码 //1.有没有输入 //2.输入的是不是数字 //3.不能有0在前面 //4.不能是小数 //5.输入的数字必须在5位以上、10位以内 var txt=document.getElementById("txt"); var btn=document.getElementById("btn"); btn.onclick=function(){ //有没有输入 var val=txt.value; if(val==""){ alert("请输入内容"); }else if(!Number(val)){ alert("请输入数字") }else if(parseFloat(val)!==parseInt(val)){ alert("不能输入小数") }else if(val.charAt(0)==0){ alert("第一位不能为0") }else if(val.length<5||val.length>10){ alert("请输入5-10位的数字") } }