在JavaScript中,选择结构指的是根据“条件判断”来决定执行哪一段代码。选择结构有3种:单向选择、双向选择以及多向选择。但无论是哪一种,JavaScript只会执行其中的一个分支。
在JavaScript中,选择结构共有两种方式:一种是if语句;另外一种是switch语句。这一节我们先来介绍if语句。对于if语句,主要包括以下要点。
- (1)单向选择:if…
- (2)双向选择:if…else…
- (3)多向选择:if…else if…else…
- (4)if语句的嵌套
一、单向选择:if…
语法:
if(条件)
{
……
}
说明:
这个“条件”一般是一个比较表达式。如果“条件”返回为true,则会执行大括号{}内部的程序;如果“条件”返回为false,则会直接跳过大括号{}内部的程序,然后按照顺序来执行后面的程序。
由大括号括起来的程序,我们又称为“语句块”。语句块常用于选择结构、循环结构以及函数中,JavaScript是把一个语句块看成是一个整体来执行。
举例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
var score = 100;
if (score > 60) {
alert("那你很棒棒噢~");
}
</script>
</head>
<body>
</body>
</html>
浏览器预览效果如图所示。
分析:
由于变量score的值为100,所以score>60返回true,因此会执行大括号{}内部的程序。
二、双向选择:if…else…
语法:
if(条件)
{
……
}
else
{
……
}
说明:
“if…else…”相对“if…”来说,仅仅是多了一个选择。当条件返回为true时,会执行if后面大括号{}中的程序;当条件返回为false时,会执行else后面大括号{}中的程序。
举例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
var score = 100;
if (score < 60) {
alert("补考!");
} else {
alert("通过!");
}
</script>
</head>
<body>
</body>
</html>
浏览器预览效果如图所示。
分析:
由于变量score的值为100,而score<60返回false,因此会执行else后面大括号{}中的程序。
对于双向选择,我们是可以使用三目运算符来代替的,像上面这个例子,如果用三目运算符来写,实现代码如下。
举例:“三目运算符”代替“双向选择”
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
var score = 100;
var result = (score < 60) ? "补考!" : "通过!";
alert(result);
</script>
</head>
<body>
</body>
</html>
浏览器预览效果如图所示。
三、多向选择:if…else if…else…
多向选择,就是在双向选择的基础上增加n个选择分支。
语法:
if(条件1)
{
//当条件1为true时执行的代码
}
else if(条件2)
{
//当条件2为true时执行的代码
}
else
{
//当条件1和条件2都为false时执行的代码
}
说明:
多向选择语法看似很复杂,其实也是非常简单的,它只是在双向选择基础上再增加一个或多个选择分支罢了。小伙伴们对比一下这两个的语法格式就知道了。
举例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
var time = 21;
if (time < 12)
{
document.write("早上好!"); //如果小时数小于12则输出“早上好!”
}
else if (time >=12 && time < 18)
{
document.write("下午好!"); //如果小时数大于等于12并且小于18,输出“下午好!”
}
else
{
document.write("晚上好!"); //如果上面两个条件都不符合,则输出“晚上好!”
}
</script>
</head>
<body>
</body>
</html>
浏览器预览效果如图所示。
分析:
对于多向选择,我们会从第1个if开始判断,如果第1个if条件不满足,则判断第2个if条件……直到满足为止。一旦满足,就会退出整个if结构。
四、if语句的嵌套
在JavaScript中,if语句是可以嵌套使用的。
语法:
if(条件1)
{
if(条件2)
{
当“条件1”和“条件2”都为true时执行的代码
}
else
{
当“条件1”为true、“条件2”为false时执行的代码
}
}
else
{
if(条件2)
{
当“条件1”为false、“条件2”为true时执行的代码
}
else
{
当“条件1”和“条件2”都为false时执行的代码
}
}
说明:
对于这种结构,我们不需要去傻乎乎地去记,只需要从外到内根据条件一个个去判断就可以了。
举例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
var gender = "女";
var height = 172;
if(gender=="男")
{
if(height>170)
{
document.write("高个子男生");
}
else
{
document.write("矮个子男生");
}
}
else
{
if (height > 170)
{
document.write("高个子女生");
}
else
{
document.write("矮个子女生");
}
}
</script>
</head>
<body>
</body>
</html>
浏览器预览效果如图所示。
分析:
在这个例子中,首先外层if语句的判断条件gender=="男"返回false,因此会执行else语句。然后我们可以看到else语句内部还有一个if语句,这个内层if语句的判断条件height>170返回true,所以最终输出内容为“高个子女生”。
实际上,if语句的嵌套也是很好理解的,说白了就是在if或else大括号内部再增加一层判断。对于if语句的嵌套,我们一层一层由外到内地判断就可以了。这个过程就像剥洋葱一样,非常简单。下面再来一个例子,让小伙伴消化一下。
举例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
var x = 4;
var y = 8;
if (x < 5)
{
if (y < 5)
{
document.write("x小于5,y小于5");
}
else
{
document.write("x小于5,y大于5");
}
}
else
{
if (y < 5)
{
document.write("x大于5,y小于5");
}
else
{
document.write("x大于5,y大于5");
}
}
</script>
</head>
<body>
</body>
</html>
浏览器预览效果如图所示。