Javascript 自动数据类型转换机制

Javascript 自动数据类型转换机制  


2010-10-16 23:15:55|  分类: 前端开发 |  标签:数据类型转换机制  |字号 订阅

在javascript 里面,当一种类型的值用于需要某种其他类型的值的环境中,那么javascript将自动尝试把值转换为所需类型,而这就是javascript的自动类型转换机制。

下标简单的描述了所有数据类型转换的过程:这里所要转换成的类型是 字符串,数字,布尔,对象:见下表。。。。。。

-------------------------------------------------------------------------------------------------------

在这里主要说说对象这种类型到基本数据类型的转化:

1.转换成布尔值

无论在什么情况下,一个非空对象在布尔环境中的时候,它都是被转换为true。这对于任何对象,数字倘或函数都是适用的。

2.转换成数字

在对象转换为数字时,其有几个步骤要做的。首先调用通过调用对象的valueOf方法来转换为数字的对象。由于大多对象默认的valueOf()方法什么都没有做,所以调用了这个方法后,其返回的都是对象本身,所以接下来的一步就是调用toString()方法,在返回对象的字符串后,就尝试把结果转换为一个数字。

这对数组产生了一个有趣的结果。数组的toString()方法吧数组元素转换为字符串,然后把各个字符连接起来,形成结果。如果没有元素,那么就会转换为0。如果只有一个元素,而且是一个数字,那么转换结果就是这个数字。如果包含多个元素,如果其中一个元素不是数字,都会返还NaN.

和数据类型紧密相关的是运算符产生的结果:

对于一个对象和一个运算符使用的情况,它应该自动转换为数字还是字符串,这仍然不是很明确。但是我们遵循转换的步骤的话,就能够推敲的出其结果了。

 

值所使用的环境

字符串

数字

布尔

对象

未定义值

‘undefined’

NaN

False

Error

null

‘null’

0

False

Error

非空字符串

不变

字符串的数字

值或NaN

True

String对象

空字符串

不变

0

False

String对象

0

‘0’

不变

False

Number 对象

NaN

‘NaN’

不变

False

Number 对象

无穷

‘infinity’

不变

True

Number对象

负无穷

‘-infinity’

不变

True

Number 对象

True

‘true’

1

不变

Boolean对象

False

‘false’

0

不变

Boolean对象

对象

to String()

valueOf() , 

toString(),

或者NaN

True

不变

你可能感兴趣的:(javaScript)