原文来自淘宝前端开饭规范:http://kissyteam.github.com/docs/html/styleguide/js-style-rules.html
?
行与缩进
语句行
- 尽可能不要让每行超过 120 个字符;
- 语句必须以分号作为结束符, 不要忽略分号;
空格
- 数值操作符(如,?+/-/*/% ?等)两边留空;
- 赋值操作符/等价判断符两边留一空格;
- for 循环条件中, 分号后留一空格;
- 变量声明语句, 数组值, 对象值及函数参数值中的逗号后留一空格;
- 空行不要有空格;
- 行尾不要有空格;
- 逗号和冒号后一定要跟空格;
- 点号前后不要出现空格;
- 空对象和数组不需要填入空格;
- 函数名末尾和左括号之间不要出现空格;
空行
- 逻辑上独立的代码块使用空行分隔;
- 文件末尾留?1~2 ?个空行;
- 不要吝啬空行。尽量使用空行将逻辑相关的代码块分割开,以提高程序的可读性。
缩进
-
以 4 个空格为一缩进层次;
-
变量声明:
- 多个变量声明时, 适当换行表示;
- 参照?var ?关键字, 缩进一层次;
-
函数参数:
- 函数参数写在同一行上;
- 传递匿名函数时, 函数体应从调用该函数的左边开始缩进;
-
数组和对象初始化时:
- 如果初始值不是很长, 尽量保持写在单行上;
- 初始值占用多行时, 缩进一层次;
- 对象中, 比较长的变量/数值, 不要以冒号对齐;
-
二元/三元操作符:
- 操作符始终跟随前行;
- 实在需要缩进时, 按照上述缩进风格;
-
表达式中的缩进同变量声明时;
括号
原则: 不要滥用括号, 必要时一定要使用.
- if/else/while/for ?条件表达式必须有小括号;
- 语句块必须有大括号;
- 一元操作符(如?delete, ?typeof, ?void )或在某些关键词(如?return, ?throw, ?case, ?new ) 之后, 不要使用括号;
变量
- 变量如有较广的作用域, 使用全局变量; 如果是在类中, 可以设计成为一个类的成员;
- 函数体中, 多个局部变量集中在一起声明, 避免分散;
- 适当延迟变量的初始化;
字符串
- JS 代码中, 单行字符串使用单引号;
- JS 代码中, 多行字符串使用?+ ?拼接形式, 不要使用?\ ?拼接;
- HTML 中?Element ?属性, 使用双引号;
命名规范
原则: * 尽量避免潜在冲突; * 精简短小, 见名知意;
-
普通变量统一使用驼峰形式;
-
常量使用全部大写, 多个单词以下划线分隔;
-
枚举量, 同常量;
-
私有变量, 属性和方法, 名字以下划线开头;
-
保护变量, 属性和方法, 名字同普通变量名;
-
方法和函数的可选参数, 名字以?opt_ ?开头, 使用?@param ?标记说明;
-
- 方法和函数的参数个数不固定时:
- 可添加参数?var_args ?为参数个数;
- 取代使用?arguments ;
- 使用?@param ?标记说明;
-
- Getter/Setter ?命名:
- 以?getFoo/setFoo(value) ?形式;
- 布尔类型使用?isFoo()/hasFoo()/canDo()/shouldDO() ?也可;
-
- 命名空间:
- 为全局代码使用命名空间, 如?sloth.* ;
- 外部代码和内部代码使用不同的命名空间;
-
重命名那些名字很长的变量, 不要在全局范围内创建别名, 而仅在函数块作用域中使用;
-
文件名应全部使用小写字符, 且不包含除?- ?和?_ ?外的标点符号;
-
临时的重复变量建议以?i, ?j, ?k , ..., 命名;
?
?
JavaScript 语言规范
- 声明变量时,必须加上?var ?关键字。
- 尽量减少全局变量的使用。
- 语句总是以分号结尾。
- 不要在块内声明函数。
- 标准特性优于非标准特性(如果类库有提供,优先使用类库中的函数)。
- 不要封装基本类型。
- 只在解析序列化串时使用?eval() ?。
- 禁止使用?with ?。
- 减少使用?continue ?和?break ?。
- 仅在函数内使用?this ?。
- 使用?Array/Object ?直接量,避免使用?Array/Object ?构造器。
- 禁止修改内置对象的原型。
?