第三章的篇幅暴涨到50页,读写起来也真是蛮累的。
不过本章正如标题那样,是很多基础概念的解释,尤其是数据类型和函数两个小节,是基础中的基础,反复理解吃透很重要。除了书中的一些解读,查阅一些其他资料也是必要的。
数据类型
前面写过一篇文章《JavaScript 中的数据类型》,对这个知识点进行了一些扩充,因为本书成书较早,可以结合一起看看新增加的类型。
另外要注意 JavaScript 中数据类型占用的内存大小,在 StackOverflow 上看到一个问题,做实验验证的时候可以参考。
以下两个函数的使用说明引自http://www.w3school.com.cn/js/pro_js_typeconversion.asp
Boolean() 函数
当要转换的值是至少有一个字符的字符串、非 0 数字或对象时,Boolean() 函数将返回true。如果该值是空字符串、数字 0、undefined 或 null,它将返回 false。
可以用下面的代码测试 Boolean 型的强制类型转换:
var b1 = Boolean(""); // false - 空字符串
var b2 = Boolean("hello"); // true - 非空字符串
var b1 = Boolean(50); // true - 非零数字
var b1 = Boolean(null); // false - null
var b1 = Boolean(0); // false - 零
var b1 = Boolean(new object()); // true - 对象
Number() 函数
Number() 函数的强制类型转换与 parseInt() 和 parseFloat() 方法的处理方式相似,只是它转换的是整个值,而不是部分值。
还记得吗,parseInt() 和 parseFloat() 方法只转换第一个无效字符之前的字符串,因此 "1.2.3" 将分别被转换为 "1" 和 "1.2"。
用 Number() 进行强制类型转换,"1.2.3" 将返回 NaN,因为整个字符串值不能转换成数字。如果字符串值能被完整地转换,Number() 将判断是调用 parseInt() 方法还是 parseFloat() 方法。
下表说明了对不同的值调用 Number() 方法会发生的情况:
| 用法 | 结果 |
|---|---|
| Number(false) | 0 |
| Number(true) | 1 |
| Number(undefined) | NaN |
| Number(null) | 0 |
| Number("1.2") | 1.2 |
| Number("12") | 12 |
| Number("1.2.3") | NaN |
| Number(new object()) | NaN |
| Number(50) | 50 |
最后
以后这个系列的每篇文章不一定对每章都做个总结,会调出一些重点的地方做个简单补充,也不排除后期继续加入修订的可能。
