编写可维护的JavaScript
第03章 语句和表达式
所有的块语句都应当使用花括号
- if
- for
- while
- do…while…
- try…catch…finally
3.1 花括号的对齐方式
推荐这种写法,左花括号放置在块语句的第一句代码末尾:
if (condition) {
doSomething();
} else {
doSomethingElse();
}
3.2 块语句间隔
推荐在圆括号前后各加一个空格
if (condition) {
doSomething();
}
3.3 switch语句
3.3.1 缩进
case 语句相对于switch缩进一个层级。
每个case语句之间用空行分开
switch (num1) {
case 1:
someShing1();
break;
case 2:
someThing2();
break;
default:
someThing3();
}
3.3.2 case语句的“连续执行”
根据case语句的“连续执行”特性,可以书写下面的代码:
switch (num1) {
case 1:
case 2:
someShing1();
break;
case 3:
someThing2();
break;
default:
someThing3();
}
3.3.3 是否使用default
在添加了注释的情况下,可以省略default。
switch (num1) {
case 1:
someShing1();
break;
case 2:
someThing2();
break;
// 没有default
}
3.4 for循环
最基本的用处就是遍历数组。
可以使用break中止循环
不要使用continue语句。使用if条件句进行代替,这样代码更容易识别
3.5 for-in循环
for-in也是循环,只不过用来遍历对象的属性
var obj={
title:"我是标题",
name:"我是名字"
}
for(var i in obj){
console.log(i + ":" + obj[i]);
}
控制台输出:
title:我是标题
name:我是名字
for-in循环有一个问题,就是它不仅遍历对象的实例属性(instance property),同样还遍历从原型继承来的属性。这时最好使用hasOwnProperty()方法为for-in循环过滤出实例属性:
var obj
for(var i in obj){
if (obj.hasOwnProperty(i)){
console.log(i + ":" + obj[i]);
}
}
推荐一直使用hasOwnProperty(),除非需要想查找原型链