在开发稍微大一点的项目时,每次都会纠结应该采用怎么样的书写风格,变量命名是采用camel 风格呢,还是下划线?变量、函数、类的命名规格一样吗? 所以,这里,我想记录一下js的开发规范,避免自己纠结,也为以后能在推广风格的时候,做下积累。
1 缩进
采用4空格的方式,避免用tab
2 行的长度
避免大于100个字符的行
当一个expression 在一行中写不下时,他需要使用换行。在运算符后面换行
如果字符串太长,将它折成多行
下一行将比上一行多一个缩进
3 注释
多写注释,有助于代码读者理解代码
注释一定要有含义,重点放在不能明显看出来功能的地方,别要用没有意义的注释浪费读者的时间
4 变量声明
所有变量在使用时,一定要先声明
所有在函数中药用到的变量,在函数头部声明
不要书写隐示的全局变量,全局变量用应该如下方式书写:window.varname;
5 函数声明
使用函数前,一定要先声明定义函数,函数内的函数,应该用 var *** 来声明
在函数名和( 之间不能有空格,在)和{ 之间,应该有一个空格。
function outer(c, d) {
var e = c * d;
function inner(a, b) {
return (e * a) + b;
}
return inner(0, 1);
}
对于匿名函数,在function 关键字和(字符间,应该有一个空格
div.onclick = function (e) {
return false;
};
当函数要立即执行时,整个函数应该放在()中。这样可以非常明显的告诉读者参数的返回值是函数的返回值,而非函数本身
var collection = (function () {
var keys = [], values = [];
return {
get: function (key) {
var at = keys.indexOf(key);
if (at >= 0) {
return values[at];
}
},
set: function (key, value) {
var at = keys.indexOf(key);
if (at < 0) {
at = keys.length;
}
keys[at] = key;
values[at] = value;
},
remove: function (key) {
var at = keys.indexOf(key);
if (at >= 0) {
keys.splice(at, 1);
values.splice(at, 1);
}
}
};
}());
6 命名
构成名字的字符有(A..Z,a .. z) ,10个数据(0..9)和下划线_。
不用用_作为第一个字符。某些场合下,_开头表示私用,但是实际上他不具有私有能力,所以不建议使用
大多数变量和函数应该以小写字母开头
var encodeHtml;
构造函数应该以大写字母开头
var animation = new __.Anim();
全局变量应该使用全大写字母的方式
Var GLOBAL = null;
7 声明
1行最多一个声明
在每一个声明后面加一个;好
8 多行声明
多行声明是指用{}包围的声明
{ 应该在多行声明的开头
}应该重启一行,并对齐
即使是1行的多行声明,也应该用{}
9 各种关键字的声明形式
if 声明,应该采用下面的方式
if (condition) {
statements
}
if (condition) {
statements
} else {
statements
}
if (condition) {
statements
} else if (condition) {
statements
} else {
statements
}
for
for (initialization; condition; update) {
statements
}
for (variable in object) {
if (filter) {
statements
}
}
while 声明
while (condition) {
statements
}
do
Statement
do {
statements
} while (condition);
switch
switch (expression) {
case expression:
statements
default:
statements
}
Each
case
is aligned with the
switch
. This avoids over-indentation.
Each group of statements (except the default
) should end with break
, return
, or throw
. Do not fall through.
try
try {
statements
} catch (variable) {
statements
}
try {
statements
} catch (variable) {
statements
} finally {
statements
}
11 空白
空白行将不同逻辑区域分开,提高了代码的可读性
空白字符应该在下面的场景中使用:
关键字和紧跟着他的(之间,应该用一个空白
while (true) {
空白字符不应该在函数名和紧跟着它的(之间。这样有助于区分关键字和函数
所有的操作符应该同操作数之间用一个空格(除.([外)
在for 声明中 ,每一个;分号后面应该紧跟一个空格
在每一个逗号后面,应该紧跟一个空格
12 尽量使用=== 和!== ,而不是== ,!=
13 避免中条件语句中进行赋值操作
if(a=b){
你的意图是将b 的值赋给a,还是
if(a===b){
如果是赋值,一定要写注释。不过,不建议这样使用
参考:
http://javascript.crockford.com/code.html
http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml