可维护的代码:
·> 可读的 eslint
·> 看上去就像是同一个人写的 eslint
·> 一致的 代码约定, IDE格式化规范
·> 可预测的 代码的测试
·> 已记录 git
1. 使用变量声明符号进行变量的声明。
a是本地变量但是b确实全局变量,这可能不是你希望发生的:
// 反例,勿使用
function foo() {
var a = b = 0;
// ...
}
// 使用链分配
let a, b;
2. 声明单声明符
function func() {
var a = 1,
b = 2,
sum = a + b,
myobject = {},
i,
j;
// function body...
}
3. 缓存引用
let el = document.getElementById("result"),
style = el.style;
4. 缓存数组(或集合)的长度是比较好的形式
for (var i = 0, max = myarray.length; i < max; i++) {
// 使用myarray[i]做点什么
}
5. hasOwnProperty()
// 一个方法添加给了所有对象
if (typeof Object.prototype.clone === "undefined") {
Object.prototype.clone = function () {};
}
// 过滤原型链上的属性
for (var i in man) 1{
if (man.hasOwnProperty(i)) { // 过滤
console.log(i, ":", man[i]);
}
}
// 进行缓存
// 警告: 通不过JSLint检测
var i, hasOwn = Object.prototype.hasOwnProperty;
for (i in man) if (hasOwn.call(man, i)) { // 过滤
console.log(i, ":", man[i]);
}
6. switch..case..
switch模式(switch Pattern)
你可以通过类似下面形式的switch语句增强可读性和健壮性:
var inspect_me = 0,
result = '';
switch (inspect_me) {
case 0:
result = "zero";
break;
case 1:
result = "one";
break;
default:
result = "unknown";
}
7. 避免隐式类型转换
8. 避免(Avoiding) eval()