在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.length>len) return false; return true; } //3.4 多行文本框的值不能少于sMixStrleng function sMixStrleng(str,len) { if(!isObj(str)) return 'undefined'; str=strTrim(str); if(str.length<len) return false; return true; } //3.5 判断单选框是否选择。 //3.6 判断复选框是否选择. //3.7 复选框的全选,多选,全不选,反选 //3.8 文件上传过程中判断文件类型 function upLoadFileType(str) { return str.match(/^(.*)(\.)(.{1,8})$/)[3]; } /**********************3表单类验证******************************/ /**********************4字符类验证******************************/ //4.1 判断字符全部由a-Z或者是A-Z的字字母组成 function isLetter(str) { if(!isObj(str)) return 'undefined'; str=strTrim(str); var reg = /^[a-zA-Z]+$/g; return reg.test(str) } //4.2 判断字符由字母和数字组成。 function isLetterOrNum(str) { if(!isObj(str)) return 'undefined'; str=strTrim(str); var reg = /^[0-9a-zA-Z]+$/g; return reg.test(str) } //4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母 function isLegalityName(str) { if(!isObj(str)) return 'undefined'; str=strTrim(str); var reg = /^([a-zA-z_]{1})([A-Za-z0-9_\.]*)$/g; return reg.test(str) } // /^([a-zA-z_]{1})([\w]*)$/g.test(str) //4.4 字符串替换函数.Replace(); /**********************4字符类验证******************************/ /**********************5浏览器类******************************/ //5.1 判断浏览器的类型 function getIEType() { return window.navigator.appName; } //5.2 判断ie的版本 function getIEVersion() { return window.navigator.appVersion; } //5.3 判断客户端的分辨率 function getResolvingPower() { return window.screen.height+"*"+window.screen.width; } /**********************5浏览器类******************************/ /**********************6综合类******************************/ //6.1 email的判断。 function isMail(mail) { return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail)); } //6.2 手机号码的验证 function isCellPhoneNum(num) { if(isNaN(num)) { alert("输入的不是数字!"); return false; } var len = num.length; if(len!=11) { return false; } return true; } //6.3 身份证的验证 function isIdCardNo(num) { if(isNaN(num)) { alert("输入的不是数字!"); return false; } var len = num.length; if (len == 15) re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/); else if(len == 18) re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/); else { alert("输入的数字位数不对!"); return false; } var a = num.match(re); if (a != null) { if (len==15) { var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]); var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; } else { var D = new Date(a[3]+"/"+a[4]+"/"+a[5]); var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; } if (!B) { alert("输入的身份证号 "+ a[0] +" 里出生日期不对!"); return false; } } return true; } //身份证严格验证 function IdCardNoCheck(sId){ var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"} var iSum=0 var info="" if(!/^\d{17}(\d|x)$/i.test(sId)) return false; sId=sId.replace(/x$/i,"a"); if(aCity[parseInt(sId.substr(0,2))]==null)return "Error:非法地区"; sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2)); var d=new Date(sBirthday.replace(/-/g,"/")) if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "Error:非法生日"; for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) if(iSum%11!=1)return "Error:非法证号"; //aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女") return true; } //6.4电话号码的验证 function PhoneCheck(str){ var reg=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/ alert(reg.test(str)); } //6.5验证IP地址 function isip(s){ var check=function(v){try{return (v<=255 && v>=0)}catch(x){return false}}; var re=s.split(".") return (re.length==4)?(check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])):false } /**********************6综合类******************************/ //回车键换为tab function enterToTab() { if(event.srcElement.type != 'button' && event.srcElement.type != 'textarea' && event.keyCode == 13) { event.keyCode = 9; } } //具有在输入非数字字符不回显的效果,即对非数字字符的输入不作反应。 function numbersonly(field,event){ var key,keychar; if(window.event){ key = window.event.keyCode; } else if (event){ key = event.which; } else{ return true ; } keychar = String.fromCharCode(key); if((key == null)||(key == 0)||(key == 8)||(key == 9)||(key == 13)||(key == 27)){ return true; } else if(("0123456789.").indexOf(keychar)>-1){ window.status = ""; return true; } else { window.status = "Field excepts numbers only"; return false; } } // function txtOnKeyPress() { var code=String.fromCharCode(window.event.keyCode)+''; alert(code); var temp =eval("isInt('"+code+"')"); window.event.returnValue = temp; }
分享到:
相关推荐
快速转换法及类型判断.htm
在JavaScript中,数据类型转换是编程过程中不可或缺...在阅读代码或调试问题时,对这些知识的掌握尤为重要,尤其在处理复杂的数据交互或类型判断时。了解和熟练运用这些转换规则,能让你在JavaScript的世界里游刃有余。
### JavaScript 类型转换详解 #### 一、概述 JavaScript 是一种动态类型的语言,它支持多种数据类型之间的自动转换。在日常开发中,我们经常会遇到不同类型数据间的比较或运算,这时就需要进行类型转换。掌握好 ...
JavaScript中的隐式类型转换是其弱类型特性的重要体现,它允许不同数据类型的值在运算时进行自动转换,但这也可能导致一些意料之外的结果。在JavaScript中,数据类型包括字符串(String)、数字(Number)、布尔(Boolean...
JavaScript 是一种动态类型语言,它的变量可以自由地转换成各种数据类型以适应不同的场景。由于JavaScript的弱类型特性,有时会导致意料之外的类型转换,尤其是涉及到数据类型的运算时。以下我们将详细介绍...
本文将深入探讨在各种编程语言中,如Python、Java、C++、JavaScript等,如何使用和转换常见数据类型,帮助开发者更好地理解和应用这些知识。 1. **基本数据类型**: - **整型(Integer)**: 包括无符号整型和有...
在JavaScript中,数据类型主要包括Number、Boolean、String、Undefined、Null、Symbol(ES6新增)以及Object(其中Array是一种特殊的Object)。JavaScript是动态类型语言,允许在运行时自动确定变量的类型,这使得...
【标题】:将 JSON 转换为易语言自定义数据类型的实现方法 【描述】:本文档将详细介绍如何将 JSON 数据转换成易语言的自定义数据类型,并提供了一个示例软件供参考。通过这个方法,可以自动化地将 JSON 对象映射到...
在JavaScript中,类型转换是一项经常被用到的技术,它是将数据从一种类型转换为另一种类型的过程。这项技术对于数据的处理和展示有着重要的作用。在本示例中,我们将详细探讨JavaScript中的类型转换技术,主要包含将...
在JavaScript中,将变量转换为布尔值最常用的方法是自动类型转换,这通常发生在使用逻辑运算符(如if语句中的条件判断、逻辑与(&&)、逻辑或(||)以及逻辑非(!))时。在这种情况下,非空字符串、非零数字、对象...
### JavaScript 判断浏览器类型及版本的方法 在网页开发过程中,有时候我们需要根据用户的浏览器类型和版本来执行特定的代码逻辑或调整界面布局。这是因为不同的浏览器在处理某些特性时可能存在差异,例如对新标准...
具体来说,如果面试官问到某段代码执行结果的问题,要特别注意JavaScript中的隐式类型转换规则,以及在if语句中的布尔值判断时,假值和真值的差异会导致哪些不同的逻辑行为。 理解类型转换对于编写健壮的JavaScript...
js类型转换中typeof会将null也识别为object, 而且返回的类型比少,我们用Object.prototype.toString来实现 第一版 function isArray(value){ return Object.prototype.toString.call(value) === "[object Array]"; ...
总结来说,在JavaScript中判断两个字符串是否相等,不仅要考虑使用哪种相等性运算符,还要注意可能需要进行的类型转换以及区域设置对字符串比较的影响。理解这些基本概念对于编写健壮且可靠的JavaScript程序是非常...
JavaScript中的隐式强制转换是指在进行运算或比较时,不同类型的数据会自动转换成适合的类型,以保证表达式的正确执行。这种转换不依赖于开发者明确的类型转换命令,而是由JavaScript引擎根据语言的规则在背后完成。...
本文所说的隐性类型的转换,说的是==引起的转换。举个简单的例子,双等号不是全等号,全等号是“===”三个等号,语句”1″==1,那么一般情况下是前面的字符串”1“转换为数字1,然后进行比较。通过这个例子应该了解...
JavaScript中的类型转换是一个非常重要的概念,因为JavaScript是一种弱类型的语言,变量在使用过程中可以自动转换为不同的类型。在JavaScript中,数据类型分为两大类:基本数据类型和引用类型。基本数据类型包括...
当然,为了覆盖更多的图片格式,我们需要扩展检查逻辑,增加更多图片类型的二进制头识别。例如,JPEG文件的文件头是"\xFF\xD8",而GIF文件的文件头是"GIF87a"或"GIF89a"。如果需要支持这些格式,只需在条件判断中...