条件执行
并非所有的程序都是直路。 例如,我们可能想创建一条分叉路,在那里该程序根据当前的情况采取适当的分支。 这被称为条件执行。
在 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
分支路径。
这个程序的模式看起来像这样: