(2) 建议二:if…else if…else与小括号、大括号之间应该空一格;
(3) 建议三:条件中的变量与“==”、“===”之间应该空一格;
(4) 建议四:类型确定的变量,在比较时,应使用严格相等符“===”,即”0” ===0比较值是false。
3.3.2循环语句
原则:
(1) 循环中必须有终止循环的条件或语句,避免死循环。
(2) 当多层循环嵌套时,计数器变量注意不要有冲突。
(3) 注意循环条件在执行循环过程中是否会发生变化,如果会则必须把循环条件的值在执行循环前获取而不要在每次循环去执行。
(4) 考虑运行效率问题也应把循环条件值放在循环执行前获取。
建议:
(1) 使用最基本的for循环,尽量避免使用for …in循环;
(2) for …in循环可用于用于object/map/hash 的遍历,对 Array 用 for-in 循环有时会出错,不建议使用;
(3) for循环中条件语句,不应该每次执行一个操作(如计算),应该在初始语句中实现;
// 不建议每次查询length的值
for (var i = 0; i < data.length; i++) {undefined
}
// 建议在初始语句中赋值一个变量
for (var i = 0, len = data.length; i < len; i++) {undefined
}
3.3.3语句规范
原则:
(1) 除了语句块最后一条语句可以没有分号“;”以外,每条语句必须以分号结束,以避免代码压缩后造成解析失败。
(2) 当代码块中只有一条语句,也不应该省略大括号,如
if (null == $tab) {undefined
return ; // 虽然只有一条语句,也不应该省略{}
}
3.3.4运算符规范
原则:
(1) 赋值符号、比较符号两侧的变量应该在同一行,不要进行换行;
(2) 字符串使用单引号(’)要优于双引号(”),尤其是在创建一个包含 HTML 代码的字符串时;
3.4类、对象与原型链规范
原则:
(1) 使用 Array 和 Object 字面量语法, 而不使用 Array 和 Object 构造器(newArray()),避免因传参不合适导致错误;
(2) 其命名规范参考第1节中命名规范;
编码风格,建议如下:
1)比较长的标识符或者数值, 不要为了让代码好看些而手工对齐. 如:
CORRECT_Object.prototype = {undefined
a: 0,
b: 1,
lengthyName: 2
};
不要这样做:
WRONG_Object.prototype = {undefined
a : 0,
b : 1,
lengthyName: 2
};
2)属性名与属性值之间不应该拥挤,应该在冒号“:”与属性值之间空一格;
3.5错误处理
基本原则:
(1) 通常的法则是系统在正常状态并且用户正常操作下,不应产生任何异常。
(2) 对可预见的错误不进行捕捉。
(3) 对不可预见或者难以解决错误进行try{…}catch(e){..}捕捉处理。
3.5.1可预见错误
对可预见的错误不进行捕捉处理,而是在错误发生前通过条件判断避免发生,如:
//若不对p1是否为null进行检查,则在其为null时会抛出缺少对象错误
document.getElementById(“p1”).style.width = 100;
//预先对对象进行检查
var objDiv1 = document.getElementById(“p1”);
if(objDiv1!=null){undefined
objDiv1.style.width = 100;
}