《编写可维护的JavaScript》读书笔记(3) --语句和表达式

语句和表达式

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

// 不好的写法,尽管是合法的js代码
if (condition) doSomething();
if (condition) { doSomething(); }

块语句的间隔

if (condition) {
    doSomething();
}

Switch语句的缩进

1.第一种缩进格式

// 个人比较喜欢的格式
switch(condition) {
    case "first":
        // 代码
        break;

    case "second":
        // 代码
        break;

    case "third":
        // 代码
        break;

    default:
        // 代码
}
  • 每条case语句相对于switch关键字都缩进一个层级;
  • 从第二条case语句开始,每条case语句前后各有一个空行。

2.第二种缩进格式

// Crockford的编程规范和Dojo编程风格指南推荐以下的格式
switch(condition) {
case "first":
    // 代码
    break;
case "second":
    // 代码
    break;
case "third":
    // 代码
    break;
default:
    // 代码
}

几个注意点

  • case语句的“连续执行”
  • default:在没有默认行为并且写了注释的情况下可以省略defalut

for循环

for循环有两种:传统的for循环和for-in循环。

1.传统的for循环往往用于遍历数组成员,比如

var values = [ 1, 2, 3, 4, 5, 6, 7],
    i, len;

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

有两种方法可以更改循环的执行过程:

  • 第一种方法是使用break语句,立即退出循环。
// 使用break语句
var values = [ 1, 2, 3, 4, 5, 6, 7],
    i, len;

for (i= 0, len=values.length; i < len; i++) {
    if (i == 2) {
        break; // 迭代不会继续
    }
    process(values[i]);
}

// 这里的循环体只执行了两次,在第三次执行process()之前就终止循环了,
  • 第二种方法是使用continue语句,立即退出本次循环,而进入下一次循环迭代。作者推荐尽可能避免使用continue,避免JSLint给出警告。
// 使用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]);
}

// 这里的循环体将执行两次,跳过第三次迭代,而进入第四次迭代,直到最后一次迭代。

2.for-in循环是用来遍历对象属性的

var prop;

for (prop in object) {
    console.log("Property name is " + prop);
    console.log("Property value is " + object[prop]);
}

使用for-in循环的注意点:

  • 它不仅遍历对象的实例属性,还遍历从原型继承来的属性。当遍历自定义对象的属性时,往往会因为意外的结果而终止,最好使用hasOwnProperty()方法来为for-in循环过滤出实例属性。
var prop;

for (prop in object) {
    if (object.hasOwnProperty(prop)) {
        console.log("Property name is " + prop);
        console.log("Property value is " + object[prop]);
    }
}
  • for-in循环是用来遍历对象的,常见的错误用法被用来遍历数组成员了。
// 错误的用法
var values = [ 1, 2, 3, 4, 5, 6, 7],
    i;

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

for-in循环是用来对实例对象和原型链中的键(key)做遍历的,而不是用来遍历包含数字索引的数组的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值