当前位置:嗨网首页>书籍在线阅读

23-其他循环模式

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

4.2.4 其他循环模式

通过使用逗号操作符(将在第5章详细介绍),可以将多个赋值操作和终止表达式连起来。比如,下面这个 for 循环可以打印斐波那契数列的前8个数字。

for(let temp, i=0, j=1; j<30; temp = i, i = j, j = i + temp)
    console.log(j);

上面这个例子中,定义了多个变量( tempij ),同时在终止表达式中对每它们都进行了操作。正如可以通过在 for 循环中使用逗号运算符做更多的事情一样,所以也可以什么都不写,这样就会创建一个永远不会停止的循环。

for(;;) console.log("I will repeat forever!");

在这个循环中,条件表达式只会去计算 undefined 的值,也就是假的。这意味着循环永远不会退出。

不过,最常见的 for 循环还是按照数字递增或者递减,当然,数字不是必须的,任何表达式都可以。来看一些例子:

let s = '3';                             // 包含一个数字的字符串
for(; s.length<10; s = ' ' + s);         // 没有填充初始表达式; 注意必须添加
                                         // 一个分号
for(let x=0.2; x<3.0; x += 0.2)          // 增量使用了非整数
    console.log(x);
for(; !player.isBroke;)                  // 使用对象的属性作为条件
    console.log("Still playing!");

注意 for 循环总是可以用 while 循环写出来,换句话说:

for([初始值];[条件];[终止表达式])
    语句

[初始值] 
while([条件]){
    语句
    [终止表达式]
}

是等效的。

然而,事实上是,for循环可以被写成while循环并不代表就应该这么做。for循环的好处是所有与循环相关的信息都会出现在第一行,它可以很清楚地说明这个循环在做什么。同时,对于for循环来说,初始变量的作用范围仅仅在循环体内部(在第7章详细介绍)。如果把for循环转换成while语句,控制变量的作用范围将会扩大到循环体外。