Javascript中的类型转换

        首先咱们能够看C中间的强制类型转换,只能存在整数可表示类型和浮点数类型之间,好比(int)2.45,这是能够的,可是他们和字符串之间都没有强制转换的可能,由于字符串实际是一个指针。所以不可能出现(char *)2.45就能够得到"2.45"这个字符串的状况,反之也不能。
        而在C++中,咱们能够建立一个类,而且重载强制转换操做,来完成这种状况,那么就必需要求有相应的对象,可是对于基本类型,这也是不能够的。
        而后,由于JavaS cript在对象模型上主要参考了Java,咱们能够再参考一下Java的类型转换:
在Java中,基本类型之间的强制转换也不是这样的,好比,整数要转换成字符串,必须使用Integer.toString()静态方法或者String.valueOf()静态方法,把字符串转换为整数,必须使用Integer.valueOf()。
可见,不能把JavaS cript中的类型转换看做为“强制类型转换”。
在JavaS cript中,Double类型和Int类型都是看做为Number对象,所以不管是typeof 1仍是typeof 1.0,都是返回number。这样咱们能够不用去管是Int仍是Double类型,让JavaS cript解释引擎内部去处理。


1. 若是要把Number转换成String,可使用Number的toString()方法,(象(1).toString()括号必须或者  1 .toString()空格必须,不然会编译出错,若是是变量则无需),或者调用String()函数,这两种方法都会自动调用解释引擎内部的  NumberToString(),或者根据进制调用其它函数,基本相似。
2.若是要把String转换成Number,可使用Number ()函数,他会自动判断String中是整数仍是浮点数,而后内部使用相应的数据类型,另外可使用全局函数parseInt()和parseFloat (),他们根据你的要求进行转换。一样的,他们在解释引擎内部机制上是使用了 StringToNumber,StringToInt等等内部的函数。
3.而若是是Double转换成Int,必须使用Math.floor()函数(截尾取整)或者Math.round()(四舍五入)
4.Int转换成Double,无须考虑任何问题,直接把Int当成Double进行运算
5.字符转换为整数,以下,能够采用ev al(String)的方法:
var a = "234" ;
a = a.replace(/(^[\\s]*)|([\\s]*$)/g, "");
if( a !="" && !isNaN( a ) )
{//若是是数字
a = ev al( a )
}
else
{//若是不是数字
a = null
}
javas cript有两种数据类型的转换方法:一种是将整个值从一种类型转换为另外一种数据类型(称做基本数据类型转换),另外一种方法是从一个值中提取另外一种类型的值,并完成转换工做。

基本数据类型转换的三种方法:

1.转换为字符型:String(); 例:String(678)的结果为"678"
2.转换为数值型:Number(); 例:Number("678")的结果为678
3.转换为布尔型:Boolean(); 例:Boolean("aaa")的结果为true

从一个值中提取另外一种类型的值的方法:

1.提取字符串中的整数:parseInt(); 例:parseInt("123zhang")的结果为123
2.提取字符串中的浮点数:parseFloat(); 例:parseFloat("0.55zhang")的结果为0.55
3.执行用字符串表示的一段javas cript代码:ev al(); 例:zhang=ev al("1+1")的结果zhang=2

注:Number、String函数是特殊的函数,在JS引擎中,他会自动判断是做为构造函数调用仍是普通调用,因此既可使用new关键字,也能够做为函数直接调用。
关于JS的参考手册,微软有一个CHM十分不错,指南、API参考都有,是Windows脚本技术,中文版,我在MSDN上下载的。而关于JS解释引擎的,我参考的是Netscape的Spidermonkey,如今由Mozilla组织维护。



引文来源   Javascript中的类型转换 - junmail - JavaEye技术网站
相关文章
相关标签/搜索