第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() {
// ...
})()