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

在 JavaScript 中,条件执行使用if关键字创建。 在简单的情况下,当且仅当某些条件成立时,我们才希望执行一些代码。 例如,仅当输入实际上是一个数字时,我们可能打算显示输入的平方。
let theNumber = Number(prompt("Pick a number", ""));if (!isNaN(theNumber))alert("Your number is the square root of " +theNumber * theNumber);
修改之后,如果您输入"parrot",则不显示输出。
if关键字根据布尔表达式的值执行或跳过语句。 决定性的表达式写在关键字之后,括号之间,然后是要执行的语句。
Number.isNaN函数是一个标准的 JavaScript 函数,仅当它给出的参数是NaN时才返回true。 当你给它一个不代表有效数字的字符串时,Number函数恰好返回NaN。 因此,条件翻译为“如果theNumber是一个数字,那么这样做”。
在这个例子中,if下面的语句被大括号({和})括起来。 它们可用于将任意数量的语句分组到单个语句中,称为代码块。 在这种情况下,你也可以忽略它们,因为它们只包含一个语句,但为了避免必须考虑是否需要,大多数 JavaScript 程 序员在每个这样的被包裹的语句中使用它们。 除了偶尔的一行,我们在本书中大多会遵循这个约定。
if (1 + 1 == 2) console.log("It's true");// → It's true
您通常不会只执行条件成立时代码,还会处理其他情况的代码。 该替代路径由图中的第二个箭头表示。 可以一起使用if和else关键字,创建两个单独的替代执行路径。
let theNumber = Number(prompt("Pick a number"));if (!Number.isNaN(theNumber)) {console.log("Your number is the square root of " +theNumber * theNumber);} else {console.log("Hey. Why didn't you give me a number?");}
如果我们需要执行的路径多于两条,可以将多个if/else对链接在一起使用。如下所示例子:
let num = Number(prompt("Pick a number", "0"));if (num < 10) {console.log("Small");} else if (num < 100) {console.log("Medium");} else {console.log("Large");}
该程序首先会检查num是否小于 10。如果条件成立,则执行显示"Small"的这条路径;如果不成立,则选择else分支,else分支自身包含了第二个if。如果第二个条件即num小于 100 成立,且数字的范围在 10 到 100 之间,则执行显示"Medium"的这条路径。如果上述条件均不满足,则执行最后一条else分支路径。
这个程序的模式看起来像这样:

