JavaScript编码风格指南:三、语句和表达式

在JavaScript中,诸如 if 和 for 之类的语句有两种写法,使用花括号包裹的多行代码和不使用花括号的单行代码。比如:

//不好的写法
if(condition)
    doSomething();

//不好的写法
if(condition) doSomething();

//好的写法
if(condition){
    doSomething();
}

//不好的写法
if(condition) { doSomething(); }

所有的块语句都应当使用花括号,包括:

  • if
  • for
  • while
  • do...while...
  • try...catch...finally

3.1 花括号的对齐方式

推荐将左花括号放置在语句中第一句代码的末尾

3.2 块语句间隔

推荐在做圆括号之前和又圆括号之后各放一个空格,例如:

if (condition) {
    doSomething();
}

3.3 switch语句

switch (condition) {
    case "first":
        //代码
        break; 

    case "second":
        //代码
        break; 

    case "third":
        //代码
        break; 

    default:
        //代码
}
  • case一个层级的缩进,break又一个层级的缩进。
  • 从第二个case开始,前边空一行
  • default不省略,即使没有任何执行语句

3.4 with语句

var book = {
    title : "编写可维护的JavaScript",
    author : "Nicholas C. Zakas"
};

var message = "The Book is ";

with (book) {
    message += title;
    message += " by " + author;
}

这个例子中我们分不出message到底是一个局部变量还是book的一个属性,JavaScript引擎和压缩工具也无法对这段代码进行优化,因为他们无法猜出代码的真正含义。

所以,禁止使用with语句。

3.5 for循环

for循环有两种方法可以更改执行过程,一个是break,跳出整个循环;另一个是continue,跳出当前循环。不推荐使用continue,例如:

//不推荐的写法
var values = [ 1, 2, 3, 4, 5, 6, 7 ],
    i,len;

for (i=0, len=values.length; i < len; i++ ) {
    if ( i == 2) {
        continue;
    }
    process(values[i]);
}

//推荐的替代写法
var values = [ 1, 2, 3, 4, 5, 6, 7 ],
    i,len;

for (i=0, len=values.length; i < len; i++ ) {
    if ( i != 2) {
        process(values[i]);
    }
}

3.6 for-in循环

1、for-in有一个问题,他不仅遍历对象的实例属性,同样遍历从原型链继承过来的属性。出于这个原因,使用hasOwnProperty()方法来为for-in循环过滤出实例属性,如:

var prop;

for (prop in object) {
    if(object.hasOwnProperty(prop)) {
        doSomething();
    }
}

除非你想要遍历原型链属性,可以去掉hasOwnProperty()方法,但要在注释中说明。

2、for-in是用来遍历对象的,不要用来遍历数组:

//不好的写法
var values = [ 1, 2, 3, 4, 5 ],
    i;

for (i in object) {
    process(items[i]);
}

你可能感兴趣的:(JavaScript编码风格指南:三、语句和表达式)