JavaScript使用学习之类型转换
类型转换
转换和相等性:
(1)"=="等于运算符在判断两个值是否相等时有时会发生类型转换,"==="恒等运算符在判断相等时不会做任何类型转换。
(2)类型转换过程中,转换前的值并不等于转换后的值。
显式类型转换:
(1)显示类型转换可以使用boolean()、number()、string()或object()函数。例如:
number("3");
string(false);
string(true);
false.tostring();
true.tostring();
boolean([ ]);
boolean(null);
object(3); //等于new number(3)
(2)除了null和undefined之外任何值都有tostring()方法。tostring()与string()方法返回的结果一致。
(3)null和undefined直接转换为对象,则会抛出一个类型错误(typeerror)。如果使用object()函数,则不会抛出异常,它仅简单地返回一个新创建的空对象。
(4)tostring()方法可以接收转换基数(范围在2至36之间),tostring()方法默认转换为十进制的。例如:
var a = "2";
a1 = a.tostring(2); //二进制
a2 = "0" + a.tostring(8); //八进制
a3 = "0x" + a.tostring(16); //十六进制
隐式转换:
(1)+运算符的操作数中有一个是字符串,则会将其他操作数转换为字符串。
(2)一元“+”运算符将其操作数转换为数字。例如:+a 等价于number(a)
(3)一元“!”运算符将其操作数转换为布尔值并取反。例如:
!! x // 等价于 boolean(x). 注意是双叹号,x先转换为true(或者false),然后取反,变为false(或者true),此时已经是布尔值了,所以不用将操作数转换为布尔值,再次取反,还是得到true(或者false)。
对象转换为原始值
(1)所有的对象(包括数组和函数,包装对象)都会转换为true。
(2)所有的对象都会继承两个转换方法,分别是tostring()和valueof()。
tostring():
对象包括普通的对象,函数,数组。
对于部分对象:例如:({x:1, y:2}).tostring() // => "[object object]
对于regexp对象:转换为表示正则表达式直接量的字符串。例如:/\d+/g.tostring() // => "/\\d+/g"
对于数组:例如:var a = [11, 12, 13]; a.tostring(); // =>"11,12,13"(一个包含逗号的字符串)
对于函数:将用户自定义的函数转换为javascript源代码字符串。
例如:(function(x) { f(x); }).tostring() // => "function(x) {\n f(x);\n}"
对于日期类:返回了一个可被javascript解析的日期和时间字符串。
例如:new date(2010,0,1).tostring() // => "fri jan 01 2010 00:00:00 gmt-0800 (pst)"
valueof():
对于对象:如果对象是复合值(一般情况下对象均为复合值),valueof()方法默认返回对象本身。数组、函数和正则表达式的valueof()方法只是简单返回对象本身。日期类定义的valueof()方法返回自1970年1月1日以来的毫秒数。例如:new date(2018,5,27).valueof();
上一篇: 前端入门22-讲讲模块化
推荐阅读
-
在Javascript中处理数组之toSource()方法的使用
-
在JavaScript中操作数组之map()方法的使用
-
在JavaScript中处理数组之reverse()方法的使用
-
在JavaScript中操作时间之getMonth()方法的使用
-
在JavaScript中处理时间之getHours()方法的使用
-
Java Web学习之MySQL在项目中的使用方法
-
sql使用cast进行数据类型转换示例
-
在JavaScript中操作时间之getUTCDate()方法的使用
-
在JavaScript中处理时间之setMinutes()方法的使用
-
在JavaScript中操作时间之getYear()方法的使用教程