在javas
下标简单的描述了所有数据类型转换的过程:这里所要转换成的类型是 字符串,数字,布尔,对象:见下表。。。。。。
-------------------------------------------------------------------------------------------------------
在这里主要说说对象这种类型到基本数据类型的转化:
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中自动数据类型转换的基本原理,重点解析了对象到基本数据类型如布尔值、数字的转换过程及其应用场景。

394

被折叠的 条评论
为什么被折叠?



