JavaScript基本编码规范
## 缩进 ##
建议使用**四个空格**缩进,这也是JSLint中默认的缩进。
什么应该缩进呢?规则很简单——花括号里面的东西。这就意味着函数体,循环 (do, while, for, for-in),if,switch,以及对象字面量中的对象属性。下面的代码就是使用缩进的示例:
```javascript
function outer(a, b) {
var c = 1,
d = 2,
inner;
if (a > b) {
inner = function () {
return {
r: c - d
};
};
} else {
inner = function () {
return {
r: c + d
};
};
}
return inner;
}
```
## 花括号{} ##
即使在不必使用花括号的时候,也应该使用花括号。
// 糟糕的实例
```javascript
for (var i = 0; i < 10; i += 1)
alert(i);
```
// 会让人误解的写法
```javascript
for (var i = 0; i < 10; i += 1)
alert(i);
alert(“a”);
```
// 好的实例
```javascript
for (var i = 0; i < 10; i += 1) {
alert(i);
}
```
if条件类似:
// 坏
```javascript
if (true)
alert(1);
else
alert(2);
```
// 好
```javascript
if (true) {
alert(1);
} else {
alert(2);
}
```
### 左花括号的位置 ###
开发人员对于左大括号的位置有着不同的偏好:在同一行或是下一行。
```javascript
if (true) {
alert("It's TRUE!");
}
```
//或
```javascript
if (true)
{
alert("It's TRUE!");
}
```
**建议:总是使用花括号,并始终把在与之前的语句放在同一行:**
```javascript
function func() {
return {
name : "Batman"
};
}
```
## 分号 ##
就像使用花括号,你应该总是使用分号,即使他们可由JavaScript解析器隐式创建。
## 空格 ##
空格的使用同样有助于改善代码的可读性和一致性。
适合使用空格的地方包括:
for循环分号分开后的的部分:如`for (var i = 0; i < 10; i += 1) {...}`
for循环中初始化的多变量(i和max):`for (var i = 0, max = 10; i < max; i += 1) {...}`
分隔数组项的逗号的后面:`var a = [1, 2, 3];`
对象属性逗号的后面以及分隔属性名和属性值的冒号的后面:`var o = {a: 1, b: 2};`
限定函数参数:`myFunc(a, b, c)`
函数声明的花括号的前面:`function myFunc() {}`
匿名函数表达式function的后面:`var myFunc = function () {};`
**使用空格分开所有的操作符和操作对象**,这意味着在+, -, *, =, <, >, <=, >=, ===, !==, &&, ||, +=等前后都需要空格。
// 宽松一致的间距,使代码更易读。好的实例:
```javascript
var d = 0,
a = b + 1;
if (a && b && c) {
d = a % c;
a += d;
}
```
// 不好的实例
```javascript
var d = 0,
a = b + 1;
if (a&&b&&c) {
d=a % c;
a+= d;
}
```
最后需要注意的一个空格:左花括号前最好使用空格!
## 变量声明 ##
所有的变量必须在使用前进行声明。
将var语句放在函数的首部。
最好把每个变量的声明语句单独放到一行,并加上注释说明。
```javascript
var currentEntry; // 当前选择项
var level; // 缩进程度
var size; // 表格大小
```
尽量减少全局变量的使用。**不要让局部变量覆盖全局变量。**
## 函数声明 ##
所有的函数在使用前进行声明。
函数名与`(`之间**不应该**有空格。构造函数的`)`与`{`之间应插入一个空格。函数程序体应缩进四个空格。
```javascript
function outer(c, d) {
var e = c * d;
function inner(a, b) {
return (e * a) + b;
}
return inner(0, 1);
}
```
## 命名 ##
变量名由26个大小写字母,10个数字,和_组成,并且只能用字母开头。不能使用中文或者$(美元符号)或者(反斜杠)。
大多数的变量名和方法命应以小写字母开头。
必须与new共同使用的构造函数名应以大写字母开头。
全局变量应该全部大写。
### 语句 ###
**简单语句**
每一行最多只包含一条语句。把;(分号)放到每条简单语句的结尾处。
**复合语句**
复合语句是被包含在{ }(大括号)的语句序列。
## 格式样例: ##
### if 语句 ###
```javascript
if (condition){
statements;
}
if (condition) {
statements;
} else {
statements;
}
if (condition) {
statements;
} else if (condition) {
statements;
} else {
statements;
}
```
### for 语句 ###
```javascript
for (initialization;condition; update) {
statements;
}
```
```javascript
for (variable in object) if (filter) {
statements;
}
```
第一种形式的循环用于已经知道相关参数的数组循环。
第二种形式应用于对象中。object原型中的成员将会被包含在迭代器中。
### while 语句 ###
```javascript
while (condition){
statements;
}
```
### do 语句 ###
```javascript
do {
statements;
} while (condition);
```
不像别的复合语句,do语句总是以`;`结尾。
### switch 语句 ###
```javascript
switch (expression){
case expression:
statements;
default:
statements;
}
```
每个 case与switch对齐。
### try 语句 ###
```javascript
try {
statements;
} catch (variable){
statements;
}
try {
statements;
} catch (variable){
statements;
} finally {
statements;
}
```
### continue 语句 ###
避免使用continue语句。它很容易使得程序的逻辑过程晦涩难懂。
### with 语句 ###
避免使用with语句。
## 注释 ##
不要吝啬注释。
i = 0; //让i等于0