1 结构
1.1 缩进
[强制]使用4个空格作为一个缩进层级
[强制] switch 下的 case 和 default 必须增加一个缩进层级。
示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31// good
switch (variable) {
case '1':
// do...
break;
case '2':
// do...
break;
default:
// do...
}
// bad
switch (variable) {
case '1':
// do...
break;
case '2':
// do...
break;
default:
// do...
}
1.2 空格
[强制] 二元运算符两侧必须有一个空格,一元运算符与操作对象之间不允许有空格
1 | var a = !arr.length; |
[强制] 用作代码块起始的左花括号 { 前必须有一个空格。
1 | // good |
[强制] if / else / for / while / function / switch / do / try / catch / finally 关键字后,必须有一个空格。
1 | // good |
[强制] 在对象创建时,属性中的 : 之后必须有空格,: 之前不允许有空格。1
2
3
4
5
6
7
8
9
10
11
12
13// good
var obj = {
a: 1,
b: 2,
c: 3
};
// bad
var obj = {
a : 1,
b:2,
c :3
};
[强制] 函数声明、具名函数表达式、函数调用中,函数名和 ( 之间不允许有空格。
1 | // good |
[强制] , 和 ; 前不允许有空格。
1 | // good |
[强制] 单行声明的数组与对象,如果包含元素,{} 和 [] 内紧贴括号部分不允许包含空格。
1 | // good |
1.3 换行
[强制] 每行不得超过 120 个字符。
[强制] 运算符处换行时,运算符必须在新行的行首。
1 | // good |
[建议] 对于 if…else…、try…catch…finally 等语句,推荐使用在 } 号后添加一个换行 的风格,使代码层次结构更清晰,阅读性更好。
1 | if (condition) { |
1.4 语句
[强制] 不得省略语句结束的分号。
[强制] 在 if / else / for / do / while 语句中,即使只有一行,也不得省略块 {…}。
1 | // good |
2 命名
[强制] 变量 使用 Camel命名法。
1 | var loadingModules = {}; |
[强制] 常量 使用 全部字母大写,单词间下划线分隔 的命名方式。
1 | var HTML_ENTITY = {}; |
[强制] 函数以及函数的参数 使用 Camel命名法。
1 | function stringFormat(theBells) { |
[强制] 类 使用 Pascal命名法。
1 | function TextNode(options) { |
[强制] 由多个单词组成的缩写词,在命名中,根据当前命名法和出现的位置,所有字母的大小写与首字母的大小写保持一致。
1 | function XMLParser() { |
[强制] 类名 使用 名词。
1 | function Engine(options) { |
[建议] 函数名 使用 动宾短语。
1 | function getStyle(element) { |
3 注释
3.1 单行注释:
[强制] 必须独占一行。// 后跟一个空格,缩进与下一行被注释说明的代码一致。
3.2 多行注释:
[建议] 避免使用 /…/ 这样的多行注释。有多行注释内容时,使用多个单行注释。
3.3 函数/方法注释
[强制] 函数/方法注释必须包含函数说明,有参数和返回值时必须使用注释标识。
[强制] 参数和返回值注释必须包含类型信息和说明。
1 | /** |
4 语言特性
4.1 条件
[强制] 在 Equality Expression 中使用类型严格的 ===。仅当判断 null 或 undefined 时,允许使用 == null。
解释:
使用 === 可以避免等于判断中隐式的类型转换。
示例:1
2
3
4
5
6
7
8
9// good
if (age === 30) {
// ......
}
// bad
if (age == 30) {
// ......
}
4.2 类型抓换
[建议] 转换成 string 时,使用 + ‘’。
1 | // good |
[建议] 转换成 number 时,通常使用 +。
1 | // good |
[强制] 使用 parseInt 时,必须指定进制。1
2
3
4
5// good
parseInt(str, 10);
// bad
parseInt(str);
[建议] 转换成 boolean 时,使用 !!。
1 | var num = 3.14; |
4.3 字符串
[强制] 字符串开头和结束使用单引号 ‘。
4.4 数组
[强制] 使用数组字面量 [] 创建新数组,除非想要创建的是指定长度的数组。1
2
3
4
5// good
var arr = [];
// bad
var arr = new Array();