网站地图    收藏   

主页 > 专题教程 > javascript > js基础 >

JavaScript数据类型转换

来源:自学PHP网    时间:2018-02-08 10:24 作者: 阅读:

[导读] JavaScript是一种“弱”类型的语言,这就是说,程序中不需要十分关注变量中存储数据的类型。例如可以在一条语句中将一个数值赋值给变量x,在另一条语句中把一个字符串在赋值给同一...

JavaScript是一种“弱”类型的语言,这就是说,程序中不需要十分关注变量中存储数据的类型。例如可以在一条语句中将一个数值赋值给变量x,在另一条语句中把一个字符串在赋值给同一个变量;也可以将数值与字符串进行比较,将字符串与布尔型数据进行比较。在变量赋值和表达式的计算过程中,JavaScript会根据需要自动完成数据类型的转换。在包括多种类型的混合表达式中,JavaScript必须决定如何处理这个表达式中的各种数据类型。

除了需要将字符串类型转换为数值类型之外,有时候也需要将数值类型转换为字符串类型,或其它数据类型之间进行数据类型的转换。例如,某些对象方法要求一个活多个特定数据类型的的参数,为了正确的使用这些方法,就需要完成适当的数据类型转换工作。

为了适应不同的情况,JavaScript提供了两种数据类型的转换方法:一种使将整个值从一种类型转换为另一种数据类型(称为基本数据类型转换),另一种方法是从一个值中提取另一种类型的值,并完成类型转换工作。完成后一张数据类型转换的方法有三个:parseInt()ParseFloat()eval()

JavaScript提供了三个方法实现基本数据类型之间的转换。

  • String():将其他数据类型的值转换为字符串,例如:String(123)的值为"123"。
  • Number():将其他类型的值转换为数值类型的值,例如:Number(true)的值为1。
  • Boolean():将其他类型的值转换为布尔型的值,除了0、NaNnullundefined""(空字符串)被转换为false之外,所有其他的值都被转换为true

这三个方法实际上是同名对象的构造函数。

parseInt()方法将字符串转换为整数。其转换过程为:从字符串第一个字符开始读取数字(跳过签到的空白符),知道遇到非数字字符时停止读取,然后将已经提取的数字字符串转换为整数,并返回该整数值。如果字符串的开始位置不是数字,而是其他字符(空白符除外),那么parseInt()方法返回NaN,表示所传递的参数不能转换为一个整数。例如:parseInt("100days")的返回值为100,parseInt("days100")的返回值为NaN

parseInt()方法还能够完成八进制和十六进制数据的转换。此时,parseInt()方法需要传入两个参数:第一个是参数要转换为整数的字符串,第二个参数指定按多少进制进行转换,进制的有效范围为2-36,其中包括二进制、八进制、十进制和十六进制。当省略第二个参数时,按十进制进行转换。但是如果字符串以0x0X开头,那么按十六进制进行转换。不论指定哪一种进制进行整数转换,方法parseInt()总是以十进制值返回结果。

parseInt()方法是JavaScript的全局函数,它的语法格式为:

parseInt(String);
parseInt(String,NumberBase);
                            

其中String是指定要转换为整数的字符串,NunberBase指定按几进制进行转换,范围从0-36。

下表中是parseInt(String)方法的应用示例:

参数值 parseInt()返回值 参数值 parseInt()返回值
"100china" 100 "china100" NaN
"-100china" -100 "china" NaN
"100.55china" 100.55 ".63" NaN
" &nabsp;100china" 100 "0Xa" 10
"100.65" 100 "0xa" 10
"0.63" 0 "0x12abc" 76476

下面是parseInt(String,NumberBase)语法格式的应用示例:

调用格式 进制数 函数返回值
parseInt("55china",8) 八进制 45
parseInt("55china",16) 十六进制 1372
parseInt("55china",10) 十进制 55
parseInt("55china",36) 三十六进制 11207215270
parseInt("0x55china",8) 八进制 0
parseInt("0x55china",16) 十六进制 1372
parseInt("55.23china",8) 八进制 45
parseInt("china55",8) 八进制 NaN
parseInt("china55",16) 示例进制 12

parseFloat()方法与parseInt()方法相似,不同之处在于parseFloat()方法能够治好浮点数,而parseInt()方法只能治好整数。浮点数包含小数部分,如1.23,0.56等,科学计数法书写的数也算浮点数,比如2E3。如果字符串不是以数字开头,那么parseFloat()方法返回NaN

调用parseFloat()方法的语法格式为:

parseFloat(String);                              
                            

下面的表格中列出了parseFloat()方法的一些应用示例:

参数值 parseFloat()返回值 参数值 parseFloat()返回值
"55.2china' 55.2 china55.2 NaN
"-55.2china" -55.2 "china" NaN
"55.63china" 55.63 ".63" 0.63
"  55.2china" 55.2 "3e2" 300
"55.63" 55.63 "-3e-2" -0.03
"0.63" 0.63 "3e2abc" 300

eval()方法能够执行用字符串表示的一段JavaScript代码,比如,执行下面的语句:

eval("k=0,for(i=1;i<101;i++){k+=i;}");                             
                            

执行后的结果为5050。利用eval()方法的这种特性,程序可以根据需要动态的生成并执行语句,这样可以进一步增强JavaScript程序执行的能力。

表达式是JavScript的一种特殊语句,eval()方法也能够用于计算表达式的值,这时,表达式以字符串形式传递给eval()方法,例如,执行下面的语句:

rs=eval( "(9+5)*2" );                              
                            

结果变量rs的值为28。

如果传递给eval()方法中的参数的语句中没有返回值,那么eval()方法返回undefined,例如:

eval("var abc");//返回undefined                              
                            

如果传递给eval()方法中的参数不是有效的JavaScript语句,那么就会产生运行错误。例如:

eval("abc");                          
                            

eval()方法的语法格式为:

eval(String);                            
                            

其中,String是由JavaScript语句或表达式组成的一个字符串。需要注意的是,这里的String只能是基本数据类型中的字符串,而不能是String对象。否则,eval()方法直接返回参数字符串,而不是字符串表示的语句。例如下面的代码:

rs = new String("2+3*6-3");
a = eval(rs);                              
                            

上面代码执行后,rs是一个String对象,a的值为字符串"2+3*6-3",而不是这个表达式计算的结果17。如果将上面的语句修改为:

rs = "2+3*6-3";
a = eval(rs);                              
                            

执行后,rs是一个基本数据类型的字符串,a的值为17。

最后需要注意的是eval()方法存在一些安全方面的隐患,在实际应用中切记不可滥用。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论