js 流程控制

一、 条件语句

通常在写代码时,您总是需要为不同的决定来执行不同的动作。您可以在代码中使用条件语句来完成该任务。

在 JavaScript 中,我们可使用以下条件语句:

  • if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码

  • if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码

  • if...else if....else 语句- 使用该语句来选择多个代码块之一来执行

  • switch 语句 - 使用该语句来选择多个代码块之一来执行

1. if 语句

  • 只有当指定条件为 true 时,该语句才会执行代码。

  • 请使用小写的 if。使用**大写字母(IF)**会生成 JavaScript 错误!

  • if 后面的圆括号( )是必须的,但大括号{}不是必须的,除非有两条以上的语句。

语法

if (condition)
{
    当条件为 true 时执行的代码
}

2. if...else 语句

使用 if....else 语句在条件为 true 时执行代码,在条件为 false 时执行其他代码。

语法

if (condition)
{
    当条件为 true 时执行的代码
}
else
{
    当条件不为 true 时执行的代码
}

3. if...else if....else 语句

使用 if....else if...else 语句来选择多个代码块之一来执行。

语法

if (condition1)
{
    当条件 1true 时执行的代码
}
else if (condition2)
{
    当条件 2true 时执行的代码
}
else
{
  当条件 1 和 条件 2 都不为 true 时执行的代码

4. switch 语句

switch 语句用于基于不同的条件来执行不同的动作。

工作原理:首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一个 case 运行。

if 语句在程序执行过程中创建一条分支,并且可以使用elseif来处理多条分支。然而,当所有的分支都依赖于同一个表达式的值时,elseif并不是最佳解决方案。在这种情况下,重复计算多条 if 语句中的条件表达式是非常浪费的做法。而switch语句就提供了更好的解决方案。

语法

switch(n)
{
    case 1:
        执行代码块 1
        break;
    case 2:
        执行代码块 2
        break;
    default:case 1case 2 不同时执行的代码
}

实例
显示今天的星期名称。请注意 Sunday=0,Monday=1, Tuesday=2, 等等:

var d = new Date().getDay();
switch (d) {
  case 0:
    x = "今天是星期日";
    break;
  case 1:
    x = "今天是星期一";
    break;
  case 2:
    x = "今天是星期二";
    break;
  case 3:
    x = "今天是星期三";
    break;
  case 4:
    x = "今天是星期四";
    break;
  case 5:
    x = "今天是星期五";
    break;
  case 6:
    x = "今天是星期六";
    break;
}

//x 的运行结果:

//今天是星期二

二、 循环语句

不同类型的循环

JavaScript 支持不同类型的循环:

  1. for - 循环代码块一定的次数

  2. for/in - 循环遍历对象的属性

  3. while - 当指定的条件为 true 时循环指定的代码块

  4. do/while - 同样当指定的条件为 true 时循环指定的代码块

1. for 循环

语法

  for(1.初始状态; 2.条件; 4.执行循环完毕后,再执行的语句 ){
            3.执行循环体语句
        }

实例

var sum = 0;
for (var times = 1; times <= 100; times++) {
  sum = sum + times;
}
console.log(sum);

2. for/in 循环

主要用于对象的遍历,可枚举的属性

实例

var person = { fname: "John", lname: "Doe", age: 25 };

for (x in person) {
  // x 为属性名
  txt = txt + person[x];
}

补充 es6 中的 for..of

for..of为 ES6 新增的方法,主要来遍历可迭代的对象(包括 Array, Map, Set, arguments 等),它主要用来获取对象的属性值,而 for..in 主要获取对象的属性名。

var colors = ["red", "green", "blue"];
colors.length = 5;
colors.push("yellow");

for (var i in colors) {
  console.log(colors[i]); // red green blue yellow
}

for (var j of colors) {
  console.log(j); // red green blue undefined undefined yellow
}

可以看到使用 for..of 可以输出包括数组中不存在的值在内的所有值。

3. while 循环

注意:和 for 循环相比,while 只需要写条件即可,所以控制条件的变量也要在循环里面去修改

语法

while (条件) {}

实例

var i = 0;
while (i < 10) {
  console.log(i);
  i++;
}

4. do/while 循环

至少执行一次, 无论条件是否满足

语法

do {
  循环;
} while (条件);

实例

var j = 10;
do {
  console.log("do while", j);
  j--;
} while (j > 0);

三、 break 和 continue 语句

break 语句用于跳出循环。(跳过整个循环)

continue 用于跳过循环中的一个迭代。(跳过循环中的一次)

1. break 语句

break 跳出循环后,会继续执行该循环之后的代码(如果有的话):
实例

for (i = 0; i < 10; i++) {
  if (i == 3) {
    break;
  }
  x = x + "The number is " + i + "<br>";
}

console.log("我是循环体后的代码");

2. continue 语句

continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。 该例子跳过了值 3:

实例

for (i = 0; i <= 10; i++) {
  if (i == 3) continue;
  x = x + "The number is " + i + "<br>";
}

四、 try/catch/finally 语句

try/catch/finally 语句用于处理代码中可能出现的错误信息。

错误可能是语法错误,通常是程序员造成的编码错误错别字。也 可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。

try语句允许我们定义在执行时进行错误测试的代码块。

catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。

finally 语句在 trycatch 之后无论有无异常都会执行。

注意catchfinally 语句都是可选的,但你在使用 try 语句时必须至少使用一个。

提示: 当错误发生时, JavaScript 会停止执行,并生成一个错误信息。使用 throw 语句 来创建自定义消息(抛出异常)。如果你将 throwtrycatch一起使用,就可以控制程序输出的错误信息。

语法

try {
    tryCode - 尝试执行代码块
}
catch(err) {
    catchCode - 捕获错误的代码块
}
finally {
    finallyCode - 无论 try / catch 结果如何都会执行的代码块
}

参数值

参数描述
tryCode必须。检查是否有错误的代码块。
err必须(如果使用 catch)。指定局部变量应用的错误。该变量可以引用 Error 对象 (包含发生的错误信息,如 "'addlert' 没有定义")。如果异常通过 throw 语句创建 , 该 变量引用了为在 throw 语句中指定的对象 (查看 "更多实例")
catchCode可选。如果 try 语句发生错误执行的代码块。如果 try 语句没发生错误该代码不会执行。
finallyCode可选。无论 try / catch 的结果如何都会执行。

五、 throw 语句

定义和用法

throw 语句抛出一个错误。

当错误发生时, JavaScript 会停止执行并抛出错误信息。

描述这种情况的技术术语是:JavaScript 将抛出一个错误。

throw 语句创建自定义错误。

技术术语是: 抛出异常

异常可以是 JavaScript 字符串数字逻辑值对象

throw "Too big"; // 抛出文本
throw 500; // 抛出数字

如果把 throwtrycatch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。

实例
本例检测输入变量的值。如果值是错误的,会抛出一个异常(err) 异常 (err) 通过 catch 语句捕获并自定义输出错误信息:

<!DOCTYPE html>
<html>
  <body>
    <p>Please input a number between 5 and 10:</p>

    <input id="demo" type="text" />
    <button type="button" onclick="myFunction()">Test Input</button>
    <p id="message"></p>

    <script>
      function myFunction() {
        var message, x;
        message = document.getElementById("message");
        message.innerHTML = "";
        x = document.getElementById("demo").value;
        try {
          if (x == "") throw "is Empty";
          if (isNaN(x)) throw "not a number";
          if (x > 10) throw "too high";
          if (x < 5) throw "too low";
        } catch (err) {
          message.innerHTML = "Input " + err;
        }
      }
    </script>
  </body>
</html>
Last Updated:
Contributors: zerojs