JavaScript规范
变量
声明变量必须加上 var 关键字。
当你没有写 var,变量就会暴露在全局上下文中,这样很可能会和现有变量冲突。另外,如果没有加上,很难明确该变量的作用域是什么,变量也很可能像在局部作用域中,很轻易地泄漏到 Document 或者 Window 中,所以务必用 var 去声明变量。
常量
常量的形式如: NAMES_LIKE_THIS, 即使用大写字符,并用下划线分隔。
分号
总是使用分号。不解释。
多行字符串
不要使用。请使用前端模板。
不要这样写长字符串:
var myString = 'A rather long string of English text, an error message \
actually that just keeps going and going -- an error \
message to make the Energizer bunny blush (right through \
those Schwarzenegger shades)! Where was I? Oh yes, \
you\'ve got an error and all the extraneous whitespace is \
just gravy. Have a nice day.';
命名
通常,使用 functionNamesLikeThis,variableNamesLikeThis,ClassNamesLikeThis,EnumNamesLikeThis,methodNamesLikeThis,和 SYMBOLIC_CONSTANTS_LIKE_THIS。
注:
- 1.文件或类中的 私有 属性,变量和方法名应该以下划线 "_" 开头。
- 2.保护 属性,变量和方法名不需要下划线开头,和公共变量名一样。
大括号
分号会被隐式插入到代码中,所以你务必在同一行上插入大括号。例如:
if (something) {
// ...
} else {
// ...
}
缩进
大多数代码使用两个空格而不是制表符来进行缩进。
除了 初始化数组和对象,和传递匿名函数外,所有被拆开的多行文本要么选择与之前的表达式左对齐,要么以4个(而不是2个)空格作为一缩进层次。
如果初始值不是很长,就保持写在单行上:
var arr = [1, 2, 3]; // No space after [ or before ].
var obj = {a: 1, b: 2, c: 3}; // No space after { or before }.
初始值占用多行时,缩进2个空格。
// Object initializer.
var inset = {
top: 10,
right: 20,
bottom: 15,
left: 12
};
// Array initializer.
this.rows_ = [
'"Slartibartfast" ',
'"Zaphod Beeblebrox" ',
'"Ford Prefect" ',
'"Arthur Dent" ',
'"Marvin the Paranoid Android" ',
'[email protected]'
];
// Used in a method call.
goog.dom.createDom(goog.dom.TagName.DIV, {
id: 'foo',
className: 'some-css-class',
style: 'display:none'
}, 'Hello, world!');
比较长的标识符或者数值, 不要为了让代码好看些而手工对齐. 如:
CORRECT_Object.prototype = {
a: 0,
b: 1,
lengthyName: 2
};
不要这样做:
WRONG_Object.prototype = {
a : 0,
b : 1,
lengthyName: 2
};
空行
使用空行来划分一组逻辑上相关联的代码片段。
doSomethingTo(x);
doSomethingElseTo(x);
andThen(x);
nowDoSomethingWith(y);
andNowWith(z);
引号
使用 ' 优于 "。
当你创建一个包含 HTML 代码的字符串时就知道它的好处了。
var msg = 'This is some HTML';
注释
好的函数命名与参数命名优于注释。如果你特别喜爱写注释,请使用JSDoc中的注释风格。行内注释使用 // 变量 的形式。