最近在看javascript高级程序设计,看之前觉得自己的js学得还不错,然后,看了没几页就觉得自己好像没有学过一样,这主要写写我以前不完全了解的一些知识。

首先是关于基本数据类型的,从Number开始,以前经常用parseInt来转换数值,看过书才知道,这个函数的本意是专门用于把字符串转换成数值,而且以前也不知道它具体是怎么一个转换规则。先来看看Number()函数的转换规则:

1.如果是Boolean 值,true 和false 将分别被转换为1 和0。
2.如果是数字值,只是简单的传入和返回。
3.如果是null 值,返回0。
4. 如果是undefined,返回NaN。
5. 如果是字符串,遵循下列规则:
6. 如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即"1"
会变成1,"123"会变成123,而"011"会变成11(注意:前导的零被忽略了);
7. 如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也会忽
略前导零);
8. 如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整
数值;
9. 如果字符串是空的(不包含任何字符),则将其转换为0;
10. 如果字符串中包含除上述格式之外的字符,则将其转换为NaN。
11. 如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换
的结果是NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符
串值。

这个规则写得很齐,也让我知道了这个函数的具体运算。

然后是字符串转换。

要把一个值转换为一个字符串有两种方式。第一种是使用几乎每个值都有的toString()方法。这个方法唯一要做的就是返回相应值的字符串表现。

比如:var num = 11;var str = true;

   var numStr = num.toString()//值为"11";

   var strStr = str.toString()//值为“true";

数值、布尔值、对象和字符串值都有toString()方法。但null 和undefined 值没有这个方法。

第二种转换的方法String()函数。这个函数的转换规则是:

如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果;
1. 如果值是null,则返回"null";
2. 如果值是undefined,则返回"undefined"。

posted on 2015-05-31 22:37  小哥丶可  阅读(105)  评论(0编辑  收藏  举报