欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript使用学习之类型转换

程序员文章站 2022-03-08 22:30:46
类型转换 转换和相等性: (1)"=="等于运算符在判断两个值是否相等时有时会发生类型转换,"==="恒等运算符在判断相等时不会做任何类型转换。 (2)类型转...

类型转换

转换和相等性:

(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();