Effective-JavaScript_01

第5条:避免对混合类型使用==运算符

1
"1.0e0" == { valueOf: function() { return true; } };

使用 == 运算符,在比较之前,它们都会被转换成数字。1.0e0 被解析为数字1,而匿名对象也通过调用自身的`valueOf方法得到结果true,然后再转换为数字,得到1。

对于Date对象,隐式转换会将Date对象转换为原始类型(优先尝试 toString 方法,再尝试 valueOf 方法)。

将非Date对象转换为原始类型(优先尝试 valueOf 方法,再尝试 toString 方法)。

为了避免隐式类型转换,尽量使用 === 运算符符

了解分号插入的局限

在以(、[、+、- 或者 / 字符开头的语句前决不能省略分号

比如:

1
2
3
["r", "g", "b"].forEach(function(key) {
// ...
});

在脚本链接的时候,在脚本之间显示地插入分号:

1
2
3
4
5
6
7
8
9
// file1.js
;(function() {
// ...
})()

// file2.js
;(function() {
// ...
})()