高质量的JavaScript代码要求:
- 可读的
- 一致的
- 可预测的
- 看起来像是同一个人写的
- 有文档的
注意:
1.减少全局变量,避免命名冲突
避免函数内部使用未声明变量(未声明变量默认为全局变量),坚持使用var声明变量(
- 通过var创建的全局变量(在任何函数体之外创建的变量)不能被删除。
- 没有用var创建的隐式全局变量(不考虑函数内的情况)可以被删除。
);
使用命名空间或者立即执行的匿名函数
2.采用单var模式声明变量
在同一个位置可以查找到函数所需的所有变量
避免当在变量声明之前使用这个变量时产生的逻辑错误(参照下一小节“声明提前:分散的 var 带来的问题”)
提醒你不要忘记声明变量,顺便减少潜在的全局变量
代码量更少(输入更少且更易做代码优化)
3.声明变量注意变量的作用域,避免“变量提前”
4.循环避免直接使用{}.length造成重复查询,消耗资源
5.数组采用for循环,对象采用for-in
6.避免使用隐式的类型转换,推荐使用'===' '!==='进行比较,不仅比较值还会比较类型
7.避免使用eval(),避免给setInterval()、setTimeout()和Function()构造函数传入字符串
8.习惯使用花括号,即使可以省略
9.习惯使用空格,以下情况建议使用:
- for循环中的分号之后,比如
for (var i = 0; i < 10; i += 1) {...}
- for循环中初始化多个变量,比如
for (var i = 0, max = 10; i < max; i += 1) {...}
- 分隔数组项的逗号之后,
var a = [1, 2, 3];
- 对象属性后的逗号以及名值对之间的冒号之后,
var o = {a: 1, b: 2};
- 函数参数中,
myFunc(a, b, c)
- 函数声明的花括号之前,
function myFunc() {}
- 匿名函数表达式function之后,
var myFunc = function () {};
另外,我们推荐在运算符和操作数之间添加空格。也就是说在+, -, *, =, <, >, <=, >=, ===, !==, &&, ||, +=符号前后都添加空格。
10.命名规范:
构造函数首字母大写,使用大驼峰命名方式,如MyConstructor()
普通函数采取小驼峰命名方式,如myFunction()
变量名采取小驼峰命名方式吗,或者单词均小写,单词之间采用'_'分隔
全局变量或者不常改变的常量,采用全大写命名
私有变量或私有方法,采用'_'开头
11.养成写注释的习惯
12.书写API文档
JavaScript领域有两个非常优秀的开源工具,它们是JSDoc Toolkit(http://code.google.com/p/jsdoc-toolkit/ )和YUIDoc(http://yuilibrary.com/projects/yuidoc )。
生成API文档的过程包括:
- 以特定的格式来组织书写源代码
- 运行工具来对代码和注释进行解析
- 发布工具运行的结果,通常是HTML页面
13.生产环境中压缩代码,使用JSLint进行代码检查