条件执行

并非所有的程序都是直路。 例如,我们可能想创建一条分叉路,在那里该程序根据当前的情况采取适当的分支。 这被称为条件执行。

条件执行 - 图1

在 JavaScript 中,条件执行使用if关键字创建。 在简单的情况下,当且仅当某些条件成立时,我们才希望执行一些代码。 例如,仅当输入实际上是一个数字时,我们可能打算显示输入的平方。

  1. let theNumber = Number(prompt("Pick a number", ""));
  2. if (!isNaN(theNumber))
  3. alert("Your number is the square root of " +
  4. theNumber * theNumber);

修改之后,如果您输入"parrot",则不显示输出。

if关键字根据布尔表达式的值执行或跳过语句。 决定性的表达式写在关键字之后,括号之间,然后是要执行的语句。

Number.isNaN函数是一个标准的 JavaScript 函数,仅当它给出的参数是NaN时才返回true。 当你给它一个不代表有效数字的字符串时,Number函数恰好返回NaN。 因此,条件翻译为“如果theNumber是一个数字,那么这样做”。

在这个例子中,if下面的语句被大括号({})括起来。 它们可用于将任意数量的语句分组到单个语句中,称为代码块。 在这种情况下,你也可以忽略它们,因为它们只包含一个语句,但为了避免必须考虑是否需要,大多数 JavaScript 程 序员在每个这样的被包裹的语句中使用它们。 除了偶尔的一行,我们在本书中大多会遵循这个约定。

  1. if (1 + 1 == 2) console.log("It's true");
  2. // → It's true

您通常不会只执行条件成立时代码,还会处理其他情况的代码。 该替代路径由图中的第二个箭头表示。 可以一起使用ifelse关键字,创建两个单独的替代执行路径。

  1. let theNumber = Number(prompt("Pick a number"));
  2. if (!Number.isNaN(theNumber)) {
  3. console.log("Your number is the square root of " +
  4. theNumber * theNumber);
  5. } else {
  6. console.log("Hey. Why didn't you give me a number?");
  7. }

如果我们需要执行的路径多于两条,可以将多个if/else对链接在一起使用。如下所示例子:

  1. let num = Number(prompt("Pick a number", "0"));
  2. if (num < 10) {
  3. console.log("Small");
  4. } else if (num < 100) {
  5. console.log("Medium");
  6. } else {
  7. console.log("Large");
  8. }

该程序首先会检查num是否小于 10。如果条件成立,则执行显示"Small"的这条路径;如果不成立,则选择else分支,else分支自身包含了第二个if。如果第二个条件即num小于 100 成立,且数字的范围在 10 到 100 之间,则执行显示"Medium"的这条路径。如果上述条件均不满足,则执行最后一条else分支路径。

这个程序的模式看起来像这样:

条件执行 - 图2