日期:2014-05-16  浏览次数:20477 次

JS类型转换以及类型判断

在Java中,基本类型之间的强制转换也不是这样的,比如,整数要转换成字符串,必须使用Integer.toString()静态方法或者String.valueOf()静态方法,把字符串转换为整数,必须使用Integer.valueOf()。可见,不能把JavaScript中的类型转换看作为“强制类型转换”。在JavaScript中,Double类型和Int类型都是看作为Number对象,因此无论是typeof 1还是typeof 1.0,都是返回number。这样我们可以不用去管是Int还是Double类型,让JavaScript解释引擎内部去处理。如果要把Number转换成String,可以使用Number的toString()方法,(象(1).toString()括号必须或者 1 .toString()空格必须,否则会编译出错,如果是变量则无需),或者调用String()函数,这两种方法都会自动调用解释引擎内部的 NumberToString(),或者根据进制调用其它函数,基本类似。 如果要把String转换成Number,可以使用Number()函数,他会自动判断String中是整数还是浮点数,然后内部使用相应的数据类型,另外可以使用全局函数parseInt()和parseFloat(),他们根据你的要求进行转换。同样的,他们在解释引擎内部机制上是使用了 StringToNumber,StringToInt等等内部的函数。 而如果是Double转换成Int,必须使用Math.floor()函数(截尾取整)或者Math.round()(四舍五入) Int转换成Double,无须考虑任何问题,直接把Int当成Double进行运算注:Number、String函数是特殊的函数,在JS引擎中,他会自动判断是作为构造函数调用还是普通调用,所以既可以使用new关键字,也可以作为函数直接调用。关于JS的参考手册,微软有一个CHM十分不错,指南、API参考都有,是Windows脚本技术,中文版,我在MSDN上下载的。而关于JS解释引擎的,我参考的是Netscape的Spidermonkey,现在由Mozilla组织维护。 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ for(i=0;i<this.all.length;i++){ vTotal+=Number(this.all[i].Value); } 得出是数字的累加不然成字符串连接了 /**********************一。验证类*****************************/ //对象是否存在 function isObj(str) { if(str==null||typeof(str)=='undefined') return false; return true; } //去除字符串中的空格 function strTrim(str) { if(!isObj(str)) return 'undefined'; str=str.replace(/^\s+|\s+$/g,''); return str; } /**********************1数字验证******************************/ //1。1整数 //整数或者为空 function isIntOrNull(str){ if(!isObj(str))//判断对象是否存在 return 'undefined'; return isNull(str)||isInt(str); } //必需是整数 function isInt(str){ var reg = /^(-|\+)?\d+$/ ; return reg.test(str); } //1.2小数 //小数或者为空 function isFloatOrNull(str){ if(!isObj(str))//判断对象是否存在 return 'undefined'; if(isInt(str)) return true; return isNull(str)||isFloat(str); } //必需是小数 function isFloat(str){ if(isInt(str)) return true; var reg = /^(-|\+)?\d+\.\d*$/; return reg.test(str); } //1.3数字大小判断 //数i不能大于数y function iMinY(i , y){ if(!isObj(i)||!isObj(y))//判断对象是否存在 return 'undefined'; if(!(isFloat(i)&&isFloat(y))) return '比较的必须是数字类型' if(i<=y) return true; return false; } //数i不能小于数y function iMaxY(i , y){ if(!isObj(i)||!isObj(y))//判断对象是否存在 return 'undefined'; if(!(isFloat(i)&&isFloat(y))) return '比较的必须是数字类型' if(i>=y) return true; return false; } /**********************1数字验证******************************/ /**********************2时间类验证******************************/ //2.1 短时间,形如 (13:04:06) function shortTimeCheck(str) { if(!isObj(str))//判断对象是否存在 return 'undefined'; var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/); //var a = str.match(/^\d{1,2}:\d{1,2}:\d{1,2}$/); if (a == null) { alert("输入的参数不是时间格式"); return false; } if (a[1]>24 || a[3]>60 || a[4]>60) { alert("时间格式不对"); return false } return true; } //2.2 短日期,形如 (2003-12-05) function shorDateCheck(str) { var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); if(r==null) return false; var d= new Date(r[1], r[3]-1, r[4]); return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]); } //2.3 长时间,形如 (2003-12-05 13:04:06) function longDateCheck(str) { var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; var r = str.match(reg); if(r==null) return false; var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]); } //2.4 只有年和月。形如(2003-05,或者2003-5) //2.5 只有小时和分钟,形如(12:03) /**********************2时间类验证******************************/ /**********************3表单类验证******************************/ //3.1 所有的表单的值都不能为空,对象内容是否为空 function isNull(str) { if(!isObj(str)) return 'undefined'; //alert("*"+str+"*"); str=strTrim(str); //alert("*"+str+"*"); if(str.length>0) return false; return true; } //3.2 多行文本框的值不能为空。 //3.3 多行文本框的值不能超过sMaxStrleng function sMaxStrleng(str,len) { if(!isObj(str)) return 'undefined'; str=strTrim(str); if(str.le