Before Coding [16] - js的循环语句

3.7 循环语句

必备知识:前面课程的学习

循环语句

循环语句是一系列反复执行直到符合特定条件的命令。JavaScript 支持fordo whilewhile这些循环语句,还有 Label(label 本身不是一个循环语句,但是经常和这些语句一起使用)。另外,你可以在循环语句中使用breakcontinue语句。

需要注意的是,还有另一种比较高级的循环语句:for each...in,但它是用来操作对象的。

综上,循环语句有以下几种:

  • for Statement
  • do...while Statement
  • while Statement
  • label Statement
  • break Statement
  • continue Statement

我们一个一个来看。

for 语句

for 循环反复直到一个特定的条件计算为假。JavaScript 中的循环和 Java 以及 C 中的循环相似。for 语句如下所示:

for ([initialExpression]; [condition]; [incrementExpression]) {
   statement
}

在一个for 执行的过程中,会发生以下事情:

  1. [initialExpression]:初始化表达式,若存在则执行。此表达式通常初始化了一个或多个循环用计数器,语法上也允许设定一个任意复杂度的表达式。表达式里还可以声明变量。
  2. [condition]:条件表达式。如果表达式的值为 true,将执行循环语句;若为 false,循环终止。若要完全忽略此条件表达式,则设此表达式的值为 true。
  3. statement:需执行的语句。如果要执行多条语句,就要用中括号({...})把语句括起来。
  4. [incrementExpression]:累计表达式。若存在则执行,然后会回到第2步执行语句。

例如下面的这个函数包含了一个 for 语句,用来计算一个选择列表(一个可以多选的选择列表)中被选择项目的数量。这个 for 语句定义了一个初始化值为 0 的变量 i,它检查 i 小于选择列表的项目数量,然后执行了 for 循环里面的 if 语句,每次循环后 i 则自动加 1。

<script type="text/javascript">

function howMany(selectObject) {
   var numberSelected = 0;
   for (var i = 0; i < selectObject.options.length; i++) {
      if (selectObject.options[i].selected)
         numberSelected++;
   }
   return numberSelected;
}

</script>
<form name="selectForm">
   <p>
      <strong>Choose some music types, then click the button below:</strong>
      <br/>
      <select name="musicTypes" multiple="multiple">
         <option selected="selected">R&B</option>
         <option>Jazz</option>
         <option>Blues</option>
         <option>New Age</option>
         <option>Classical</option>
         <option>Opera</option>
      </select>
   </p>
   <p>
      <input type="button" value="How many are selected?"
         onclick="alert ('Number of options selected: ' + howMany(document.selectForm.musicTypes))"/>
   </p>
</form>

do...while 语句

do...while 语句反复直到一个特定条件计算为假。do...while 语句如下所示:

do
   statement
while (condition);

语句(statement)会在条件判断前执行一次。如果要执行多条语句,就要用中括号({...})把语句括起来。如果条件表达式(condition)为 true,语句将再次执行。在每次语句执行完毕时,会执行条件判断。如果条件表达式(condition)为 false,执行停止并跳到 do...while 后继续执行下面的语句。

在下面的例子中,do 循环至少迭代一次,然后重复执行直到 i 不再小于 5。

do {
   i += 1;
   console.log(i);
} while (i < 5);

while 语句

while 语句只要一个特定条件计算为真就执行语句。如下所示:

while (condition)
   statement

如果条件表达式(condition)为 false,在循环体内的语句停止执行,然后跳到循环体后的语句继续执行。

条件(condition)在循环体内的语句执行之前进行判断。如果条件表达式(condition)为 false,语句(statement)将会试行并且条件会再次进行判断。如果条件表达式(condition)为 false,执行停止,然后跳到 while 循环体后的语句执行。

如果要执行多条语句,就要用中括号({...})把语句括起来。

例如,下面的 while 循环只在 n 小于 3 的时候反复执行:

n = 0;
x = 0;
while (n < 3) {
   n++;
   x += n;
}

在每次迭代中,循环计数器 n 会增加 1 并会与 x 相加。因此,x 与 n 在每次迭代中的值为:

  1. 第一次执行后:n=1,x=1;
  2. 第二次执行后:n=2,x=3;
  3. 第三次执行后:n=3,x=6。

在第三次执行完成后,条件判断 n<3 不再为 true,循环终止。

注:构造循环语句时,应当避免死循环。
例如:
下面的语句将一直循环,因为它的条件永远不会变为 false:

while (true) alert("Hello, world");

对象操作语句

JavaScript 用 for...in, for each...in 和 with 语句来操作对象。

for...in 语句

for...in 语句迭代一个指定的变量去遍历这个对象的属性,每个属性,javascript 执行指定的语句。一个for...in 语句示例如下:

for (variable in object) {
   statements
}

for each...in 语句

它和 for...in 相似,但是让对象属性的值递回取得,而不是作用于它们的名字。

var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};
for each (var item in obj) {
  sum += item;
}
print(sum); // prints "26", which is 5+13+8

本节任务

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349

推荐阅读更多精彩内容