本教程操作环境:windows7系统、javascript1.8.5版、dell g3电脑。
javascript数据类型转换包括:显式类型转换和隐式类型转换。
显式的转换数据类型
显示的转换数据类型主要通过js定义的数据转换方法。
1、转换成字符串
多数的javascript宿主环境(比如node.js和chrome)都提供了全局函数tostring; 与此同时object.prototype也定义了tostring方法,使得所有对象都拥有转换为字符串的能力。
比如一个number转换为string:
var n = 1;n.tostring(); // '1'
tostring接受一个参数指定进制,默认为10. 可以利用这个参数生成包括字母和数字的随机字符串:
math.random().tostring(36).substr(2);
random生成一个0到1的随机数,36进制的字符集为[0-9a-z](36个),substr用来截掉起始的"0."。 另外object.prototype.tostring可以用来检测javascript对象的类型:
var tostring = object.prototype.tostring;tostring.call(new date); // [object date]tostring.call(new string); // [object string]tostring.call(math); // [object math]// since javascript 1.8.5tostring.call(undefined); // [object undefined]tostring.call(null); // [object null]// 自定义类型tostring.call(new myclass); // [object object]
2、转换为数字
字符串转换为数字也是常见需求,通常用来从用户输入或文件来获得一个number,在javascript中可以直接用parseint和parsefloat。 例如:
var inum1 = parseint("12345red"); //返回 12345var inum1 = parseint("0xa"); //返回 10var inum1 = parseint("56.9"); //返回 56var inum1 = parseint("red"); //返回 nanvar fnum4 = parsefloat("11.22.33"); //返回 11.22
注意nan是javascript中唯一一个不等于自己的值。(nan == nan) === false! 如果遇到非法字符,parseint和parsefloat会忽略之后的所有内容。
parsefloat只接受十进制数字的字符串,而parseint还提供了第二个参数(可选)用来指定字符串表示数字的进制:
var inum1 = parseint("10", 2); //返回 2var inum2 = parseint("10", 8); //返回 8var inum3 = parseint("10", 10); //返回 10
3、强制类型转换
boolean(0) // => false - 零boolean(new object()) // => true - 对象number(undefined) // => nannumber(null) // => 0string(null) // => "null"
隐式的数据转换
通过 javascript 自身自动转换。javascript 能够根据运算环境自动转换值的类型,以满足运算需要。
1、递增和递减操作符
递增和递减操作符直接借鉴自c,而且各有两个版本:前置型和后置型(a++ ,a-- ,++a , --a)。顾名思义,前置型应该位于要操作的变量之前,而后置型应该位于要操作的变量之后。
这4个操作符对任何值都适用,也就是他们不仅适用于整数,还可以用于字符串、布尔值、浮点数值和对象,此时伴随着隐式的数据类型转换。
2、一元四则运算
加法运算符+是双目运算符,只要其中一个是string类型,表达式的值便是一个string。
对于其他的四则运算,只有其中一个是number类型,表达式的值便是一个number。
对于非法字符的情况通常会返回nan:
'1' * 'a' // => nan,这是因为parseint(a)值为nan,1 * nan 还是 nan
3、逻辑非操作符 与 比较操作符 将任意值转换为 布尔值
逻辑非操作符首先会将他的操作数转换为一个布尔值,然后再对其求反。
4、关系比较操作符
5、判断语句
判断语句中的判断条件需要是boolean类型,所以条件表达式会被隐式转换为boolean。 其转换规则同boolean的构造函数。比如:
var obj = {};if(obj){ while(obj);}
6、native代码调用
javascript宿主环境都会提供大量的对象,它们往往不少通过javascript来实现的。 javascript给这些函数传入的参数也会进行隐式转换。例如bom提供的alert方法接受string类型的参数:
alert({a: 1}); // => [object object]
【推荐学习:javascript高级教程】
以上就是javascript数据类型转换包括什么的详细内容。
