基本格式
- 使用4个空格字符作为一个缩进层级,(记得配置编辑器)。
- 不要省略分号。
- 行的长度限定在80个字符。
- 长度超过限制时,选择在运算符之后换行,下一行需要两个层级的缩进。例外,变量赋值以及变量声明时,第二行应当和赋值运算符或第一个变量保持对齐。
- 适当的增加空行:
- 在方法之前。
- 在方法的局部变量和第一条语句之间。
- 在多行或单行注释之前。
- 在方法内的逻辑片段之间插入空行,提高可读性。
- 变量和函数命名,统一使用小驼峰式大小写,即首字母小写,后续每个单词首字母都大写。对于构造函数,使用大驼峰式大小写。匈牙利命名,如sName表示字符串,iCount表示整数,不推荐使用。
- 推荐的命名方式
- 变量的命名应当是名词。
- 函数和方法的前缀应当是动词。
- 构造函数的命名应当是名词。
- 一些常见动词的约定:
动词 | 含义 |
---|---|
can | 函数返回一个布尔值 |
has | 函数返回一个布尔值 |
is | 函数返回一个布尔值 |
get | 函数返回一个非布尔值 |
set | 函数用来保存一个值 |
- 常量,使用大写字母和下划线来命名,下划线用以分隔单词。
- 引号的使用,字符串,倾向于使用单引号,并始终保持这个风格。
- null 的使用场景为,期望是对象的变量,参数,返回值,把它当作对象的占位符。
- 变量在声明时即赋予初始值。undefined的问题见下:
js
var b; console.log(b) // undefined console.log(typeof b); // 'undefined' console.log(c) // 报错 console.log(typeof c) // 'undefined' var a = {}; console.log(a.aaa) // undefined console.log(typeof a.aaa); // 'undefined' console.log(d.aaa) // 报错 console.log(typeof d.aaa); // 报错
- 对象和数组使用直接量进行定义。
js
var obj = { a: "a" } var arr = ["a","b","c"];
注释
-
单行注释
- 用来解释下一行代码。请在这行注释之前插入一个空行,且缩进层级和下一行代码保持一致。
- 在代码行尾部的注释。代码结束到注释之间至少由一个缩进。该行不要超过最大字符限制,若超过请放置于该行上方。
- 注释大段的代码。
-
多行注释
- 风格如下:
js
/* * 我是注释 * 另一段注释 */
- 与单行注释一样,注释之前有一个空行。
- 缩进与下一行代码一致。
-
使用注释
- 难以理解的代码
- 可能被误以为错误的代码
- 浏览器特性Hack
语句和表达式
-
所有的块语句都应该使用花括号。
- if
- for
- while
- do...while...
- try...catch...finally
花括号的对齐规范
js
// 推荐 if(condition) { doSomething(); } else { doSomethingElse(); } // 禁止,以免导致错误的分号自动插入。 if (condition) { doSomething(); } else { doSomethingElse(); }
-
块语句间隔,推荐使用Google JavaScript风格。
- Dojo 风格
js
if(condition){ doSomething(); }
- Google JavaScript 风格
js
if (condition) { doSomething(); }
- jQuery 风格
js
if ( condition ) { doSomething(); }
此处省略了switch for的使用规范
-
for-in 使用规范
- for-in 循环必须使用
hasOwnProperty()
。 - 除非你要查找原型链,但必须补充注释。
- 不可用于遍历数组,数组必须使用for。
- for-in 循环必须使用
变量、函数和运算符
- js会将变量声明提前,因此在函数内部任意地方定义变量和在函数顶部定义变量是完全一样的。
尤其是js没有块级作用域,需注意。推荐做法是,有意识地将声明提升到函数块的顶部来做。 - 函数声明同样也会被js提前。推荐做法是,先声明后使用。
- 不可在条件语句中使用函数声明。
- 严格模式,"use strict"; 不要将该指令写到全局中,而是写在函数块内。
- 始终使用 === 和 !== 。
- 禁止使用 eval() ,唯一例外:涉及到回调中解析JSON的情形。
- 禁止使用原始包装类型(String,Boolean,Number)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。