JavaScript编码风格指南(中文版)(3)

所有的变量在使用前都应当事先定义。变量定义应当放在函数开头,使用一个var表达式每行一个变量。除了首行,所有行都应当多一层缩进以使变量名能够垂直方向对齐。变量定义时应当初始化,并且赋值操作符应当保持一致的缩进。初始化的变量应当在未初始化变量之前。

// 好的写法 var count = 10, name = "jeri", found = false, empty;

函数声明

函数应当在使用前提前定义。一个不是作为方法的函数(也就是说没有作为一个对象的属性)应当使用函数定义的格式(不是函数表达式和Function构造器格式)。函数名和开始圆括号之间不应当有空格。结束的圆括号和右边的花括号之间应当留一个空格。右侧的花括号应当同function关键字保持同一行。开始和结束括号之间不应该有空格。参数名之间应当在逗号之后保留一个空格。函数体应当保持一级缩进。

// 好的写法 function outer() { var count = 10, name = "jeri", found = false, empty; function inner() { // code } // 调用inner()的代码 }

匿名函数可能作为方法赋值给对象,或者作为其他函数的参数。function关键字同开始括号之间不应有空格。

// 好的写法 object.method = function() { // code }; // 不好的写法:不正确的空格 object.method = function () { // code };

立即被调用的函数应当在函数调用的外层用园括号包裹。

// 好的方法 var value = (function() { // 函数体 return { message:"hi" } }());

严格模式

严格模式应当仅限在函数内部使用,千万不要在全局使用。

// 不好的写法:全局使用严格模式 "use strict"; function doSomething() { // code } // 好的写法 function doSomething() { "use strict"; // code }

10.运算符

赋值

给变量赋值时,如果右侧是含有比较语句的表达式,需要用圆括号包裹。

// 好的写法 var flag = (i < count); // 不好的写法:遗漏圆括号 var flag = i < count;

等号运算符

使用===(严格相等)和!==(严格不相等)代替==(相等)和!=(不等)来避免弱类型转换错误。

// 好的写法 var same = (a === b); // 好的写法 var same = (a == b);

三元操作符

三元运算符应当仅仅用在条件赋值语句中,而不要作为if语句的替代品。

// 好的写法 var value = condition ? value1 : value2; // 不好的写法:没有赋值,应当使用if表达式 condition ? doSomething() : doSomethingElse;

11.语句

简单语句

每一行最多只包含一条语句。所有简单的语句都应该以分号(;)结束。

// 好的写法 count++; a = b; // 不好的写法:多个表达式写在一行 count++; a = b;

返回语句

返回语句当返回一个值的时候不应当使用圆括号包裹,除非在某些情况下这么做可以让返回值更容易理解。例如:

return; return collection.size(); return (size > 0 ? size : defaultSize);

复合语句

复合语句是大括号括起来的语句列表。
•括起来的语句应当较复合语句多缩进一个层级。
•开始的大括号应当在复合语句所在行的末尾;结束的大括号应当独占一行且同复合语句的开始保持同样的缩进。
•当语句是控制结构的一部分时,诸如if或者for语句,所有语句都需要用大括号括起来,也包括单个语句。这个约定使得我们更方便地添加语句而不用担心忘记加括号而引起bug。
•像if一样的语句开始的关键词,其后应该紧跟一个空格,起始大括号应当在空格之后。

if 语句

if 语句应当是下面的格式。

if (condition) { statements } if (condition) { statements } else { statements } if (condition) { statements } else if (condition) { statements } else { statements }

绝不允许在if语句中省略花括号。

// 好的写法 if (condition) { doSomething(); } // 不好的写法:不恰当的空格 if (condition){ doSomething(); } // 不好的写法:所有代码都在一行 if (condition) { doSomething(); } // 不好的写法:所有代码都在一行且没有花括号 if (condition) doSomething();

for 语句

for类型的语句应当是下面的格式。

for (initialization; condition; update) { statements } for (variable in object) { statements }

for语句的初始化部分不应当有变量声明。

// 好的方法 var i, len; for (i=0, len=0; i < len; i++) { // code } // 不好的写法:初始化时候声明变量 for (var i=0, len=0; i < len; i++) { // code } // 不好的写法:初始化时候声明变量 for (var prop in object) { // code }

当使用for-in语句时,记得使用hasOwnProperty()进行双重检查来过滤对象的成员。

while 语句

while 类的语句应当是下面的格式。

while (condition) { statements }

do 语句

do 类的语句应当是下面的格式。

do { statements } while (condition);

switch 语句

switch 类的语句应当是如下格式。

switch (expression) { case expression: statements default: statements }

switch下的第一个case都应当保持一个缩进。除第一个之外包括default在内的每一个case都应当在之前保持一个空行。

每一组语句(除了default)都应当以break、return、throw结尾,或者用一行注释表示跳过。

// 好的写法 switch (value) { case 1: /* falls through */ case 2: doSomething(); break; case 3: return true; default: throw new Error("Some error"); }

如果一个switch语句不包含default情况,应当用一行注释代替。

// 好的写法 switch (value) { case 1: /* falls through */ case 2: doSomething(); break; case 3: return true; default: // 没有default }

try 语句

try类的语句应当格式如下。

try { statements } catch (variable) { statements } try { statements } catch (variable) { statements } finally { statements }

12.留白

在逻辑相关的代码之间添加空行代码可以提高代码的可读性。

两行空行仅限于在如下情况下使用:
•在不同的源代码文件之间。
•在类和接口定义之间。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzffgs.html