×

[JavaScript学习]JavaScript数据类型转换

作者:Terry2016.11.06来源:Web前端之家浏览:12191评论:0

在上一篇文章中我们介绍了"JavaScript文档对象模型-DOM2级样式",本文将继续了解:JavaScript数据类型转换。

600.png

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

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

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

基本数据类型转换

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

  • String():将其他数据类型的值转换为字符串,例如:String(123)的值为"123"。

  • Number():将其他类型的值转换为数值类型的值,例如:Number(true)的值为1。

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

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

提取整数的parseInt()方法

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()方法

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

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

parseFloat(String);

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

参数值parseFloat()返回值参数值parseFloat()返回值
"55.2china'55.2china55.2NaN
"-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()方法

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()方法存在一些安全方面的隐患,在实际应用中切记不可滥用。

返回javascript教程主目录>>

您的支持是我们创作的动力!
温馨提示:本文作者系Terry ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/js1473868800527.html

网友评论文明上网理性发言 已有0人参与

发表评论: